数组的概念
数组是相同类型数据的有序集合.
相同类型的若干个数据,按照一定先后次序排列组合而成。
其中,每一个数据称作一个数组元素
每个数组元素可以通过一个下标来访问它们.
数组的特点:
其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 (缺点)
其元素必须是相同类型,不允许出现混合类型。(除过Object以外)
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
数组中可以存放重复的元素
1:数组的定义以及初始化
1.1 :动态初始化: 数据类型[] 数组名 = new 数据类型[数组长度];
1.2:静态初始化: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2…};
1.3:静态初始化
数据类型[] 数组名 = {元素1,元素2…};
2:获取元素
根据数组的下标获取元素 数组名[下标]
注意:下标从0开始,到数组长度-1结束
[0,数组.length-1]
3:获取数组的长度 (长度是数组的属性)
数组名.length
4:数组的遍历:数组的迭代,依次将数组中的元素获取
4.1 :普通for循环
for(int i = 0;i<数组.length;i++){
System.out.println(arr[i]);
}
4.2 :for-each jdk1.5新特性
for(数组的数据类型 变量名:数组名){
System.out.println(变量名);
}
普通for循环和for-each循环的区别
1:共同点:都可以依次遍历元素
2:不同点
2.1:for-each遍历的效率比普通for循环高
2.2: 普通for循环根据下标获取元素
for-each没有下标,声明一个临时的变量来保存元素
2.3:普通for循环在遍历的同时还可以对数组做修改
for-each循环在遍历的同时不可以对数组做修改
2.4:for-each只有一个功能:就是遍历元素
5:数组的内存分析
public static void main(String[] args) {
//1:声明数组
int[] score;//声明一个整型的数组,数组名叫score
//int score2[];
//2:初始化数组
score = new int[5]; //创建一个长度为5的数组 (在堆内存中开辟一块大小为5的空间)
//3:给数组存储数据
score[0] = 100;
score[1] = 99;
score[2] = 98;
score[3] = 97;
score[4] = 100;
// score[5] = 85;//第六个 ArrayIndexOutOfBoundsException 数组下标越界
//4:定义数组,并初始化 动态初始化 (根据数组的长度来确定元素的个数)
String[] str = new String[3];
str[0] = "a";
str[1] = "b";
str[2] = "c";
//5:定义数组,并初始化 静态初始化 (根据元素的个数来确定数组的长度)
String[] str2 = new String[]{"a","b","c"};
//6:定义数组,并初始化 静态初始化 (根据元素的个数来确定数组的长度) 直接赋值法
String[] str3 = {"a","b","c"};
//7:获取数组的元素 (根据下标获取数组元素)
System.out.println(str3[2]);
System.out.println(str3[1]);
System.out.println(str3[0]);
//8:获取数组的长度
System.out.println(str3.length);
// String[] str3 = new String[3]{"a","b","c"};//错误,不能同时写长度以及元素
//9:遍历数组
int[] arr = {10,20,30,40,50,100};
/* System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println(arr[5]);
*/
//从下标为length-1开始循环,倒循环
for(int i= arr.length-1;i>=0;i--){
System.out.println(arr[i]);
}
System.out.println("-------------------");
//从下标为0开始循环
/* for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
arr[i] = 300; //修改 重新赋值
}
*/
System.out.println("-------------------");
//for--each循环
for(int a:arr){
System.out.println(a);
a = 200;
}
System.out.println(Arrays.toString(arr));
/* int i = 0;
while(i<arr.length){
System.out.println(arr[i]);
i++;
}
*/
}
}