目录
一、数组的定义及初始化
1、数组的定义
2、数组的创建及初始化
1.数组的创建
2.数组的初始胡
二、数组的使用及内存分布
1、数组的使用
1.数组的访问
2.数组的遍历
1.for循环遍历
2.for each遍历
*** 作
2、数组的内存分布
三、数组相关的函数
1、将数组转变为字符串toString
2、拷贝函数1 copyOf
3、拷贝函数2 copyOfRange
4、拷贝函数3 System.arraycopy
5、拷贝函数4 clone
6、排序 sort
7、填充 fill
8、计算数组长度 length
一、数组的定义及初始化 1、数组的定义
数组就是存放相同元素的一个集合,比如要记录每个学生的成绩,如果一个元素一个元素的定义,需要好多个,因为成绩都是一个类型的数据,这个时候我们可以使用一个数组,很容易解决问题
2、数组的创建及初始化 1.数组的创建类型[] 数组名={元素};
类型[] 数组名=new int[]{元素};
类型[] 数组名=new int[长度];
2.数组的初始胡静态初始化:
2.1中的前两个,如下
int[] array1={1,2,3,4,5};
int[] array2=new int[]{1,2,3,4,5};
动态初始化:
2.1中的第三个,如下:
int[] array3=new int[5];
二、数组的使用及内存分布
1、数组的使用
1.数组的访问
数组名[合法下标]这样就可以访问到数组里的元素,如下访问下标为0与2的元素,要注意的是数组的下标是从0开始的
public static void main(String[] args) {
int[] array1={1,2,3,4,5};
System.out.println(array1[0]);
System.out.println(array1[2]);
}
2.数组的遍历 1.for循环遍历1
3
通过循环来控制下标进而对数组每个元素进行访问
public static void main(String[] args) {
int[] array1={1,2,3,4,5};
for (int i = 0; i < 5; i++) {
System.out.print(array1[i]+" ");
}
}
2.for each遍历1 2 3 4 5
这种遍历与循环不同,是没有用到下标的
public static void main(String[] args) {
int[] array1={1,2,3,4,5};
for(int x:array1){
System.out.print(x+" ");
}
}
1 2 3 4 5
使用:for(int x:数组名) {
*** 作}
2、数组的内存分布1.数组名:是一个引用变量,他里面存储了对象的地址
int[] arr1={1,2,3,4,5}; //把arr1叫做引用变量-----简写
System.out.println(arr1); //输出[I@14ae5a5:这个[代表是数组类型,I代表是整数,@后面是地址的哈希值
2.数组名是个引用变量,他存储在Java虚拟栈里,而数组的每个元素是通过关键词new创建的,他存储在堆区
三、数组相关的函数使用以下函数前先要进行导包,在第一行加入import java.util.Arrays;
import java.util.Arrays;
1、将数组转变为字符串toString
先看代码
public static void main(String[] args) {
int[] array1={1,2,3,4,5};
String ret=Arrays.toString(array1);
System.out.println(ret);
}
[1,2,3,4,5]
使用:Arrays.toString(数组名),之后会将数组元素用逗号隔开,开头与结尾加[],转变为字符串
2、拷贝函数1 copyOfpublic static void main(String[] args) {
int[] array1={1,2,3,4,5};
int[] array2=new int[5];
array2=Arrays.copyOf(array1,5);
System.out.println(Arrays.toString(array2));
}
将array1拷贝给array2
[1,2,3,4,5]
使用:int[] 目标数组名=Arrays.copyOf(待拷贝数组,拷贝长度);
如果长度过长有扩容的效果,如果过小就会部分拷贝
3、拷贝函数2 copyOfRange public static void main(String[] args) {
int[] array1={1,2,3,4,5};
int[] array2=new int[5];
array2=Arrays.copyOfRange(array1,1,5);
System.out.println(Arrays.toString(array2));
}
这个函数实现了部分拷贝
[2,3,4,5]
使用:int[] 目标数组名=Arrays,copyOfRange(待拷贝数组名,下标1,下标2);
从下标1拷贝到下标2
4、拷贝函数3 System.arraycopy public static void main(String[] args) {
int[] array1={1,2,3,4,5};
int[] array2=new int[5];
System.arraycopy(array1,0,array2,0,5);
System.out.println(Arrays.toString(array2));
}
相较于前2个函数,这个函数比较灵活
[1,2,3,4,5]
使用:System.arraycopy(待拷贝数组名,待拷贝开始的下标,目标数组名,目标数组的接受下标,拷贝长度);
5、拷贝函数4 clonepublic static void main(String[] args) {
int[] array1={1,2,3,4,5};
int[] array2=new int[5];
array2=array1.clone();
System.out.println(Arrays.toString(array2));
}
这个函数拷贝比较暴力,直接拷贝过去,不需要传任何参数
[1,2,3,4,5]
使用:int[] 目标数组名=待拷贝数组名.clone();
6、排序 sortpublic static void main(String[] args) {
int[] array1={2,1,3,5,4};
Arrays.sort(array1);
System.out.println(Arrays.toString(array1));
}
传入数组名后直接排序
排序后:
[1,2,3,4,5]
使用:Arrays.sort(待排序的数组名);
7、填充 fill1.全部填充
public static void main(String[] args) {
int[] array1=new int[5];
Arrays.fill(array1,60);
System.out.println(Arrays.toString(array1));
}
[60,60,60,60,60]
使用:Arrays.fill(待填充数组名,填充元素);,上述代码填充60,后输出全是60
2.局部填充
public static void main(String[] args) {
int[] array1=new int[5];
Arrays.fill(array1,1,4,9);
System.out.println(Arrays.toString(array1));
}
[0,9,9,9,0,0]
使用:Arrays.fill(待填充数组名,起始下标,终止下标(不包括),填充元素); ,以上代码给从1到4(不包括4)的下标元素填充9
8、计算数组长度 lengthpublic static void main(String[] args) {
int[] array1=new int[]{1,2,3,4,5};
int n=array1.length;
System.out.println(n);
}
5
使用:int n=数组名.length;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)