大家好,今天小编关注到一个有意思的话题,就是关于java语言数组的问题,于是小编就整理了5个相关介绍Java语言数组的解答,让我们一起看看吧。
JAVAString数组?
J***a数组是在J***a编程中经常使用的一个类,下面是对J***a数组String的使用方法:
1、J***a数组的语法: String[数组下标], J***a数组的下标是从0开始的。
2、获取数组中的所有元素,会用到数组的遍历,通常用for循环。
5、可以使用Arrays类中binarySearch(Object[] a, Object key) 方法来查找是否存在某个值。
j***a判断数组是否包含某个元素?
J***a判断数组arr是否包含某个元素targetValue,可以使用如下的方法:Arrays.asList(arr).contains(targetValue)
可以先把数组变为集合List,然后用***自带的方法contains(),就可以在检查是否包含。
Arrays.asList(数组).contains(要检查的值)
另一种方法,使用ArrayUtils。arr是数组,value是你要检查是否存在的元素,存在返回true,不存在返回false。
ArrayUtils.contains(arr,value);
j***a怎么使用随机抽取数组里的数据?
Random r = new Random();
System.out.println(b[r.nextInt(3)]);r.nextInt(3);就是随机取得0 1 2这三个数中的其中一个,然后当做你数组的下标,就随机抽取了
j***a怎么求数组的最大值和最小值?
错在最后两段代码是相同的,写了两个“max”,就会得到最大值与最小值是一样的结果。
只需要把最后一个“max”改为“min”就可以了,改了之后的程序如下:
public class a {
public static void main(String args[]) {
int a[]={84,40,16,3,10,49,28,76,94,70};
int n;
int min=a[0];
int i;
int max=a[0];
for(n=0;n<=9;n++) {
J***a数组有最大长度吗?
J***a数组的length必须是一个非负的int值,所以理论上最大的大小是2^31-1。
另外可能还与jvm实现相关,例如说如果jvm使用32位int来记录大小的话,那么数组的总空间需要小于int32的最大值。这时可能最大的大小也会与数组类型相关。
回答这个问题之前,我们先来看一下J***a中数组是怎么定义的(以String类型为例):
第一种方式,String[] = new String[8]; 第二种方式 String[] = {"a","b","c"};
这两个方式有什么区别呢,第一种方式是定义的时候,只是在堆内存中分配了8个连续的内存地址,而每个一内存地址中对应的都是null。第二种方式,也是在堆内存中分配了连续的内存空间,但是每个内存地址中,都有指向了指定的值。不管是哪种方式,我们都可以知道数组的长度是一个非负的int类型的。如果按照int类型数据的取值范围的话,理论的最大值应该是2^31-1 = 2147483647。那么实际情况真的是这样的么?
为了,弄清楚这个问题,我们去查看一下jdk8 ArrayList的源码:
我们可以很清楚地看到,jdk8中ArrayList里面定义的数组最大长度是Integer.MAX_VALUE - 8 的,而且人家也解释了:有些虚拟机在数组中保留了一些头信息,我猜应该这就是为啥 减8的原因。另外人家说了,如果你尝试申请过大的数组的,可能会导致OutOfMemoryError 内存溢出 这种异常。
那么,到底最大的长度是多少呢?带着这个疑问,我做了以下的测试(本测试是基于jdk8,win7,64位系统的):
可以看出最大长度并不是像jdk8源码里面写的那样。既然是heep space 不足,我去查看了一下,运行是的参数-Xms128m -Xmx750m,也就是说最大堆内存是750M,按照这个内存去分配大小,依旧是这种问题。经过不断的测试,最终在我的机器上数值最大的长度是 524025852。这个还只是单类测试的,如果那种企业级应用的话,我猜数组的最大长度远远要比这个小。
以上就是我经过测试在我本机上的结果,对于不同的机器,不同的系统,这个数据可能不是固定的。如果大家有更好的答案或不同的见解,欢迎大家留言评论。如果对技术热爱的话,欢迎关注头条号:It界里一枚小学生。谢谢大家。
到此,以上就是小编对于j***a语言数组的问题就介绍到这了,希望介绍关于j***a语言数组的5点解答对大家有用。