Java数组

数组定义:相同数据类型的集合。(在内存中是连续的。)
一、一维数组:
1.定义:

 int[] arr1={1,2,3,4,5};
 int[] arr2=new int[]{1,2,3,4,5}//new产生一个对象
 int[] arr3=new int[5];

引用:用来存放对象的地址
2.使用
①访问数组中的元素

 System.out.println(arr[1]);

②数组名.length表示数组的长度(length不是方法,是属性,字符串中是方法)
③遍历数组

for(int x:arr1){//x数组当中的变量  arr1数组名
                          System.out.println(x+" ")
}
for(int i=0;i<arr1.length;i++{
     System.out.print(arr1[i]+" ");
}

3.注意:
①数组越界:异常(数组越界异常)

java.lang.ArrayIndexOutOfBoundsException

②for循环和foreach的区别:foreach不用下标访问
③定义好数组没有初始化,数组默认值为0(数组如果是引用类型,则为null)

重点:
①按值传递:不改变变量的值
按引用传递:传的是对象的地址,类似于指针
总结: 所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进 行数组参数传参, 其实只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大)

②java中数组的内存分析:(JVM内存区域划分,线程拥有前三个)
java虚拟机栈(JVM Stack):局部变量(数组名arr1)
本地方法栈(Native Method Stack):native方法:底层由C++实现,特点:快
程序计数器(PC Register):指令
堆(Heap):对象,new关键字(数组对象)
方法区(Mathod Area): 静态变量 类的信息
常量池(Runtime Constant Pool):作用->存放字符串常量 String str=“hello”;
在JDK1.7之前,常量池在方法区中
从JDK1.7开始,常量池被挪到了堆当中

③null:是所有引用类型的初始值

java.lang.NullPointerException //空指针异常
int[] arr={}//数组长度为0;
System.out.println(arr1);//打印出的是地址的哈希码(是通过真实地址进行哈希过的)

④数组的常用方法:

数组转字符串

 System.out.println(Arrays.toString(arr));//Array是java中的工具类,使用时需导入包 
	

数组拷贝

          System.arraycopy(arr,0,arr1,0,arr.length);//本地方法(被native修饰),速度快,无  返回值
          arr1=Arrays.copyOf(arr,arr.length);//返回值为数组,不需要new,内部调用了System.arraycopy();
          arr1=arr.clone();

深拷贝:数组当中存放的是内置类型或简单类型,需要新定义一个拷贝对象(存在新的数组中)
浅拷贝:数组当中是引用类型,如果是两个引用同时指向一个对象,那么通过一个引用修改当前的对象的值后,另一个引用也会受到影响。

数组排序

 Arrays.sort(arr);

二、二维数组
打印二维数组:(两个for循环)

System.out.println(Arrays.deepToString(arr));
int[][]  arr=new int[3];
arr[0]=new int[2];//第一行两列
arr[1]=new int[3];//第二行三列

Array工具类的常用方法:

copyOfRange(int[] original, int from, int to)

将指定数组的指定范围复制到新数组中。

equals(int[] a, int[] a2)

如果两个指定的int数组彼此 相等 ,则返回 true 。

fill(int[] a, int val)

将指定的int值分配给指定的int数组的每个元素。

fill(int[] a, int fromIndex, int toIndex, int val)

将指定的int值分配给指定的int数组的指定范围的每个元素。

sort(int[] a)

按照数字顺序排列指定的数组。

sort(int[] a, int fromIndex, int toIndex)

按升序排列数组的指定范围。

copyOf(int[] original, int newLength)

复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿哈哈~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值