赞
踩
数组:
1、概念
一组相同类型的数据的组合,数组也是一种引用类型。
数组的特点:一经创建,长度不可变。
2、名称
数组名称不是固定的,与存放的数据的类型有关。
如: 存放一组int类型的数据,数组名称 int[ ]
存放一组字符串数据,数组名称 String[ ]
存放一组Scanner类型的数据,数组名称 Scanner[ ]
存放一组字符类型的数据,数组名称 char[ ]
3、元素的概念
数组中的每个数据,都是这个数值的元素。
4、数组的声明与初始化
声明:元素类型[] 变量名;
元素类型 变量名[]; (不建议此写法)
变量初始化的时机:2种
(1)声明时直接初始化
(2)先声明,再初始化(使用前初始化)
数组的变量初始化:3种情况
(1)静态初始化
String[] names = {"A","B"};
int[] nums = {};
(2)动态初始化
--规定数组长度的写法
int[] ages = new int[length]; //length数组初始的长度
动态初始化的数组其实有默认元素:
整数类型:默认是0
浮点数类型:默认0.0
字符类型:默认'\u0000'
布尔类型:默认false
引用数据类型:默认值null
--不规定长度的写法
int[] ages = new int[]{};
double[] counts = new double[]{1.2,3.14};
5、数组的长度、下标
即数组元素的个数
表示方式:变量名.length;
下标从0开始,最后一个元素的下标为:length-1;
下标范围:0~length-1
6、数组元素的访问
通过下标进行查看
语法:变量名[index]; //index要访问的数组元素下标
数组元素的遍历(从头到尾依次查看)
for(int i=0;i
System.out.println(变量命[i]);
}
7、数组间的赋值、元素的覆盖(赋值,替换)
语法:变量名[index] = value;
就是指数组中变量之间的赋值。通过一个变量对数组的元素进行修改,那么与之相关的变量对应的数组的元素也会发生变化。
如:
int[] a = {1,2,3};
int[] b = a;
通过修改b数组中的元素值,a对应的数组也跟着改变
8、数组下标越界异常
异常的提示内容:java.lang.ArrayIndexOutOfBoundsException
出现的原因:访问数组元素时的下标超出了范围
正确范围:0~length-1
错误下标:
变量名[-1]
变量名[length]
练习代码:
public static voidmain(String[] args){int[] scores = {1,2,10,100};
System.out.println(fs[5]);/*数组下标越界异常,编译器检查不出来此异常
运行时才会出现,出现的结果造成了程序的中断结束。*/System.out.println("over");
}
9、引用类型Arrays
Arrays类型是数组的工具类。此类提供了很多对数组操作的功能方法
如:
String info = Arrays.toString(数组名);
Arrays.toString():此方法是将数组的元素拼接成String字符串.
拼接后的格式如下:
"[元素1,元素2,.....元素length-1]"
练习代码:
public static voidmain(String[] args){int[] scores = {1,2,10,100};
System.out.println(Arrays.toString(scores));
}
10、数组的复制
系统复制法:
System.arraycopy(src,start1,des,start2,length);
src:源数组,即被复制的数组名
start1:源数组复制的开始下标
des:目标数组,即复制到的数组名
start2:目标数组复制的开始下标
length:复制的长度
工具类提供的复制方法:
元素类型[] 变量名=Arrays.copyOf(src,newLength);
src:源数组
newLength:新数组的长度
功能解释:从src的下标为0的元素开始复制,复制到长度为newLength的新数组中,新数组存放元素的开始位置为0
练习代码:
public static voidmain(String[] args){int[] nums = {99,100,98,99,100};/*创建一个数组num2,存储元素
1000,99,100,98,99,100*/
int[] num2 = new int[6];
num2[0] = 1000;
System.arraycopy(nums,0,num2,1,nums.length);
System.out.println("num2:"+Arrays.toString(num2));int[] num1 = Arrays.copyOf(nums,5);
System.out.println(Arrays.toString(num1));/*创建一个int类型的num2,长度为10,前五个元素
为num1的内容。*/
int[] num2 = Arrays.copyOf(num1,10);
System.out.println(Arrays.toString(num2));
}
练习题:创建一个长度为n [50,100]的字符数组,随机存储n个小写的英文字母,然后统计每个字母出现的次数。
public static voidmain(String[] args) {int[] num = new int[26];int n = (int)(Math.random()*51+50);char[] strs = new char[n];for (int i = 0; i < strs.length; i++) {
strs[i]= (char) (Math.random()*26+97);for(int j=97;j<=122;j++){if((char)j==strs[i]){
num[j-97]++;
}
}
System.out.print(strs[i]+" ");if((i+1)%10==0)
System.out.println();
}
System.out.println("\n总共生成"+n+"个字母,其中:");for (int i = 0; i < num.length; i++) {
System.out.print((char)(i+97)+"出现了"+num[i]+"次 ");if((i+1)%5==0){
System.out.println();
}
}
}
二维数组
二维数组的初始化:
静态初始化
如:int[][] a = {{1},{1,2},{2,3,4}};
动态初始化:
(1)等长式初始化
int[][] a = new int[3][2];
表示a有三个元素,每个元素都是2个长度的数组。
(2)只规定高维数组的长度
int[][] a = new int[3][];
表示a有三个元素,但是都是null,null在使用时,需要新建数组对象(长度任意)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。