一·数组
1.当需要在java程序中记录单个数据内容时,则申明一个变量即可。
2.当需要在java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组的本质就是在内存空间中申请一段连续的存储单元。
3.数组是相同数据类型的多个元素容器,元素按线性顺序排列,在java语言中体现为一种引用数据类型。
二·一维数组的声明方式
String[] arr = new String[5];
调用数组的length属性可ui获取数组长度;
可以通过下标的方式去访问。对于长度为n的数组范围是0 ~n-1;
public static void main(String[] args) throws Exception{
int[] arr1 = new int[2];
System.out.println(arr1.length);
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);//java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常
}
//循环打印
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
//数组初始化方式
int[] arr1 = new int[5]; //动态初始化
int[] arr2 = {1,2,3}; //静态初始化
//特殊写法,静态方式
int[] arr3 = new int[]{1,2,3};
三·内存分析
栈区:用于存放程序运行过程当中的所有的局部变量,一个运行的java程序从开始到结束会有多次变量声明。
堆区:JVM会在其内存空间中开辟一个称之为堆的存储空间,这部分空间用于存储用new关键字创建的数组和对象。
四·数组的优缺点
可以直接通过下标的方式访问指定元素的位置,速度很快。
要求所有元素的数据类型一致。
要求内存空间必须连续,长度一旦确定就不能修改。
增加和删除元素时需要移动大量元素,效率低。
五·数组的拷贝
//数组的拷贝
int[] arr = {11,22,33,44,55};
int[] brr = new int[3];
System.arraycopy(arr,1,brr,0,3); //表示从数组arr中下标从1开始的三个元素拷贝到数组brr中下标从0开始的位置
for(int i =0;i<brr.length;i++){
System.out.println(brr[i]);
}
六·数组的工具类:
java.util.Arrays类可以实现堆数组中元素的便利查找排序等操纵
七·数组工具类常用的方法
toString 输出数组中的内容
fil 将参数指定元素复制给数组所有的元素
equals 判断两个数组元素内容和次序是否相同
sort 堆数组中的元素进行从小到大的排序
binarySearch 从数组中查找参数指定元素所在的位置
/*
* 编程实现数组工具类的使用
* */
public static void main(String[] args) {
//1.声明一个初始值为10,20,30,40,50的一维数组
int[] arr = {10,20,30,40,50};
//2.使用原始方式打印数组中的所有元素,要求打印格式为:[10,20,30,40,50]
System.out.println("第一个数组中的元素有:"+"[");
for(int i=0;i<arr.length;i++){
if(i == arr.length-1){
System.out.println(arr[i]);
}else{
System.out.println(arr[i]+", ");
}
}
System.out.println("]");
//3.使用数组工具类实现数组中所有的元素打印
System.out.println("第一个数组的元素有"+ Arrays.toString(arr));
System.out.println("==============");
int[] arr2 = new int[5];
Arrays.fill(arr2,7);
System.out.println(Arrays.toString(arr2));
//排序
int[] scores = {10,20,80,70,50,30};
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
//查找
System.out.println(Arrays.binarySearch(scores,10)); //如果不存在则返回负数
}
八·二维数组
//声明和使用
int[][] arr = new[行数][列数];
int[][] brr = new [2][2]{{1,2},{3,4}}
int[][] brr = new int[2][6];
int[] arr = new int[6];
brr.length代表数组brr的长度,也就是元素的个数,也就是一维数组的个数, 也就是行数
brr[0].length代表数组中第一个元素的长度,也就是一维数组的长度,也就是第一行的列数。
//1.声明一个具有2行三列元素类型为Int类型的二维数组
int[][] arr = new int[2][3];
//打印数组中每个元素
//使用外层for循环控制打印的行数
for(int i=0;i<arr.length;i++){
//使用内层for循环控制打印的列数
for(int j =0;j<arr[i].length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
//实现二维数组的赋值
int cnt =1; //实现二维数组中的元素赋值
for(int i =0;i<arr.length;i++){
for(int j =0;j<arr[i].length;j++){
arr[i][j] = cnt++;
}
}
for(int i=0;i<arr.length;i++){
//使用内层for循环控制打印的列数
for(int j =0;j<arr[i].length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
浙公网安备 33010602011771号