一、数组
1、数组:相同类型的数据集合 内存是连续的
定义:3种方法
int[] array = {1,2,3,4,5,6,7,8,9,10};
int[] array2 = new int[]{1,2,3,4,5,6,7};
int[] array3 = new int[10];
其中前两种为静态初始化,第三个是动态初始化(其默认值为0);
2、数组的使用
获取数组的长度为: array.length(length为数组的属性,不是函数)
3、遍历数组的方法:
1)、for(int i);
for(i=0;i<array.length;i++){ System.out.println(array[i]); }
2)、for each();
for(数组的里元素的类型:数组名)
for(int i : array){ System.out.println(i +" "); }
3)、Arrays.toString();
将数组以字符串形式输出
3、JVM内存区域:
分为:
1、Java虚拟机栈(存放局部变量)
2、本地方法栈(存放被native修饰的方法的局部变量)
native修饰的方法:本地方法
特点:底层由C或C++代码实现,java只需调用即可,速度快
3、程序计数器(存放下一条指令)
4、堆(存放new的对象)
5、方法区(存放已被虚拟机加载的类信息、常量、静态变量;如方法编译的字节码)
注意:
在JDK1.7之前,常量池存放在方法区
但之后存放在堆(常量池:一般存放字符串常量)
相关练习
1、数组转字符串
Arrays.toString();
int arr = {1,2,3,4,5,6}; String newArr = Arrays.toString(arr); System.out.println(newArr)
Arrays:数组操作的工具类
2、数组拷贝
1)、for();
2)、Arrays.copyof(array1,array1.length);
底层调用的是System.arraycopy();方法,会返回新的对象
3)、System.arraycopy();
参数:(原数组,开始位置,目的数组,开始位置,拷贝长度)是native方法
如:
int[] array1 = {1,2,3,4,5}; int[] array2 = new int[array1.length]; System.arraycopy(array1,0,array2,0,array1.length); System.out.println(Arrays.toString(array2))
4)、clone();
会返回新的对象
int[] array1 = {1,2,3,4,5}; int[] array2 = array1.clone(); System.out.println(Arrays.toString(array2));
二、二维数组
1、定义:
int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
int[][] array3 = new int[3][4];
int[][] array4 = new int[][]{{1,2,3},{4,5,6}};
不规则数组:列数不一定都是相同的
int[][] array2 = {{1,2},{4,5,6},{7,8,9}};
int[][] array5 = new int[3][];
2、访问二维数组的方法
for(i=0;i<array.length;i++){ for(j=0;j<arry[i].length);j++){ } }
3、二维数组内存格式
4、java.util.Arrays;数组操作工具类
1)、Arrays.copfOf();
2)、Arrays.toString();
3)、Arrays.sort();
4)、Arrays.copyOfRange(array,2,5)按范围拷贝数组的内容;[2,5)左闭右开区间
5)、Arrays.equals(array,array2)判断两个数组的内容是否相等
6)、Arrays.fill(array,开始位置,目的位置,填充内容) 左闭右开区间