数组
什么是数组:类型一致的一组数据,相当于集合概念,在软件中解决一组,一堆xxx数据时候使用数组。
数组变量:是引用变量(不是基本变量)引用变量通过数组的内存地址位置引用了一个数组(数组对象),栓到数组对象的绳子。
int[] ary = new int[3];//ary----------->{0,0,0}<-------------ary1
int[] ary1 = ary;// ary 的地址赋值给ary1
ary与ary1绑定了同一个数组
ary[1]与ary1[1]是同一个元素
数组变量不是数组(数组对象)
数组(数组对象)
有3种创建(初始化)方式
1)new int[10000]给元素数量,适合不知道具体元素,或者元素数量比较多时。
2)new int[]{3,4,5};不需要给出数量,直接初始化具体元素适合,知道数组的元素。
3){2,3,4}静态初始化,是(2)简化版,只能用在声明数组变量时候直接初始化。
数组元素的访问
1)数组长度:长度使用属性访问:ary.length获取数组下标
2)数组下标:范围:0-length-1就是[0,length)超范围访问会出现:下标越界异常
3)使用[index]访问数组元素:ary[2]
package day05;
/*
* 数组
* 声明数组变量
* 创建数组对象
*/
public class Demo02 {
public static void main(String[] args) {
//声明和创建数组
int[] ary;//声明数组变量ary
ary=new int[3];//new int[3]创建数组对象,简称创建数组
/*
* ary=数组对象:表示ary的值引用了数组对象
* ary是引用变量,引用了 一个数组对象new int[10]
*
*/
int[] ary2 = ary;//是引用的赋值,赋值结果ary2和ary
//引用了同一个数组对象
ary[0]=3;
System.out.println(ary2[0]);//3
//数组元素的自动初始化:创建数组时候数组元素是自动初始化的
//初始化为0值0 0.0 false /u0000编码为0的字符,是控制字符
int[] ary3 = new int[3];//元素自动初始化为0
System.out.println(ary3[0]);//0
System.out.println(ary3[1]);//0
System.out.println(ary3[2]);//0
double[] ary4 = new double[3];
System.out.println(ary4[0]);//0.0
boolean[] ary5 = new boolean[3];
System.out.println(ary5[0]);//false
char[] ary6 = new char[3];
System.out.println(ary6[0]);//控制字符\u0000显示无效果
System.out.println((int)ary6[0]);//0
//创建数组时候直接初始化元素
int[] ary7 = new int[]{2,3,4};
System.out.println(ary7[0]);//2
//数组静态初始化:简化版初始化数组元素,只能用在声明变量时候直接赋值
int[] ary8 = {2,3,4};
// ary8 = {4,5,6};//编译错误
ary8 = new int[]{4,5,6};
/*
* {0,0,0},new int[]{0,0,0}和new int[3]
* 如上3中数组是,没有任何差别的!
* 根据实际业务需要,哪种方便用哪个
* 如:创建10000个元素的数组,用new int[10000]
* 如果已经知道有具体元素了,用{3,4,5}或new int[]{4,5,6}
*/
}
}
package day05;
/*
* 访问数组元素
*/
public class Demo03 {
public static void main(String[] args) {
int[] ary1 = new int[]{3,4,5};
//数组的长度属性length
System.out.println(ary1.length);//3
//数组的下标范围0,1,2最后一个元素的位置length-1
//超过数组下标范围访问会出现异常。
System.out.println(ary1[0]);//3
System.out.println(ary1[2]);//5
System.out.println(ary1[ary1.length-1]);//5
// System.out.println(ary1[3]);//运行异常,下标越界
ary1[0]=8;//修改数组元素
ary1[1]++;
System.out.println(ary1[0]);//8 读取数组元素
System.out.println(ary1[1]);//5
}
}
package day05;
/*
*数组的迭代
*迭代:遍历,就是将数组元素逐一处理一遍的方法
*/
public class Demo04 {
public static void main(String[] args) {
//累加数组元素
int[] ary = {1,2,3,4,5,6,7,8,9};
// 1 2 3 4 5 6 7 8 9 lenghth 10
//i = 0~<length
int sum = 0;
for(int i=0;i<ary.length;i++){
//i = 0 1 2...9 代表数组的每个序号
//ary[i] = 1 2 3 ... 9代表数组中每个元素
int n = ary[i];//n是数组中每个元素
System.out.println(i+":"+n);//0:1
sum+=n;
}
System.out.println(sum);
}
}