Java中解锁数组正确姿势以及赋值,foreach遍历?,Java自带的对数组排序,比较等等的静态方法总结

初始化

①.double[ ] myList;//此时myList还未分配空间,直到下一步

   myList=new double[5];

②.double[ ] myList=new double[5];

以上是两种初始化的方式;

 

二维数组初始化:

赋值

下面说一下赋值的方式:

①.double[ ] myList={1,2,3,4,5};

②.double[ ] myList=new double[5];

myList[0]=1;

myList[1]=2;

myList[2]=3;

myList[3]=4;

myList[4]=5;

下面说一下错误的赋值:

double[ ] myList;

myList={1,2,3,4,5};//为什么?因为此时myList还没分配空间

 

 

foreach循环:(增强型for)

        for(数组类型  数组元素e : 数组名称)

例:for(int x: array)

         System.out.println(x);这样就可以遍历array中的所有元素;

 

数组如何复制:

            

 

如果进行 list2=list1操作的话,虽然能让list2指向list1的内存地址(这句赋值语句只能改变list2的内存指向,不会改变内容),从而使list2获取list1的内容,可是list2原先的内存地址内容就会被GC,违背了复制的本意;

 

三种复制的方法:

①.将数组里的元素一一找出赋值;

②.使用System中的静态方法arraycopy(sourceArray, srcPos, targetArray, tarPos, length);(不解释连招)

③.使用clone()方法;

 

匿名数组

类似于匿名对象,只是暂时用一下,如果以后都不需要用到这个数组,就可以使用匿名数组:

public  void array(int a[ ]){

for(int e:a)

System.out.println(e);

}

如何调用方法时使用匿名数组呢?  array(new int[ ]{1,2,3});即可,甚至连数组名都不需要

 

当数组作为形参时:

回顾一下,当基本类型作为形参时,形参和实参都放在同一个栈之中,且两个东西的内存地址也是不一样的,所以调用方法,实参传值给形参,形参不论怎么变都不会改变实参的值;

 

反观数组,当数组作为形参,形参和实参都放在一个栈中,但是他们指向的是同一个数组,也就是说形参实参共享这个数组,所以实参传值传的其实是个引用,指向同一个数组,形参在方法中变了,那么实参也会变;

原理图:

注意:数组是放在中;因为数组也是对象,JVM将所有的对象都放在了堆中Heap;

 

方法返回类型是个数组:

public void int[ ]  arraytest(int[ ] List){

return 一个数组;

}

 

当数组中存放的是对象:(其实String ,Integer也是类,也是这样初始化)

class Circle{

}

Circle[ ] circle=new Circle[10];

然后一个一个添加Circle的对象;

 

数组排序:

Array的静态方法是Arrays.sort(数组名),或者Arrays.sort(数组名,startpos,endpos)

 

返回数组的字符串形式(常用):

Arrays.toString(数组名);

int[] list = {2 , 4, 7, 10};
System.out.println(Arrays.toString(list));
显示 [ 2 , 4 , 7, 10],相当于{"2","4","7","10"}

 

查找数组元素位置(二分法查找):

Arrays.binarySearch(数组名,要查找的元素);找到的话会返回下标,没找到返回一个负数;

 

数组内容比较:

Arrays.equal(数组名1,数组名2);返回true或false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值