Java数组

什么是数组:

eg:存储10,20,30,60这些数据,可以写成

int[]  arr = {10,20,30,60};

eg:存储a,b,c这些数据,写成

int[]  arr = {'a','b','c');

eg:   存储张三、李四、王五这些数据,要写成

String[] names = {"张三","李四","王五"};

数组元素:构成数组的每一个元素

数组下标:下标就是数组元素在数组中的位置。从0开始!依次累加1(也成为索引

数组大小:数组中元素的个数,也称为数组的长度。

数组在计算机中的执行原理:

如int[]  ages = {12,19,21};

首先,左边 int[] ages 表示定义了一个数组类型的变量,变量名叫 ages
其次,右边 {12,24,36} 表示创建一个数组对象,你完全可以把它理解成一个能装数据的东西。这个对象在内存中会有一个地址值 [I@4c873330 ,每次创建一个数组对象都会有不用的地址值。
然后,把右边的地址值 [I@4c873330 赋值给左边的 ages 变量
所以, ages 变量就可以通过地址值,找到数组这个东西。
Java数组_第1张图片

定义数组:

Java中定义数组有两种语法格式:数据类型 数组名[  ];或数据类型[  ] 数组名;(推荐第二种格式)

数组有两种初始化的方式:分别是静态、动态初始化

静态初始化数组:

在定义数组时直接给数组中的数据赋值这种方式称为静态初始化

数据类型 [] 变量名 = new 数据类型 []{ 元素 1 , 元素 2 , 元素 3 };
简化为:
数据类型 [] 变量名 = { 元素 1 , 元素 2 , 元素 3 };

如:int[]  score = new int[]{10,20,30}; 或:int[] score = {10,20,30,};

动态初始化数组:

动态初始化不需要我们写出具体的元素,而是指定元素类型和长度就行
数据名 = new 数据类型[数组长度];
eg:names = new String[5]
定义数组和为数组元素分配内存,这两步可以并在一起写,例如:
String[] names = new String[5];
注意:

使用动态初始化定义数组时,根据元素类型不同,默认值也有所不同。

Java数组_第2张图片


 数组的元素访问:

访问数组的元素个数:数组名.length

System.out.println(arr.length);

获取数组的最大索引:arr.length-1(前提是数组中存在数据)

System.out.println(arr.length-1);

数组的遍历:

使用到for循环,例如:

int [] ages = { 12 , 24 , 36 };
for ( int i = 0 ; i < ages . length ; i ++ ) {   // i的取值 = 0, 1, 2
System . out . println ( ages [ i ]);
}

数组使用过程可能出现的问题:

eg:

Java数组_第3张图片

第二处答案为97,不报错。

第三处会报错(得强制类型转换才行)

如果在数组中保存的元素可以自动提升 ( 自动类型转化 ) 为数组自己的类型,那是可以保存的
数组下标越界

多个变量指向同一个数组的问题:

Java数组_第4张图片

 Java数组_第5张图片

总结:

 两个变量指向同一个数组时,两个变量记录的是同一个地址值。

当一个变量修改数组中的元素时,另一个变量去访问数组中的元素,元素已经
被修改过了

使用增强for循环遍历数组:

for(元素类型 变量名:要迭代的对象){

        System.out.println(变量名);

}

eg:for(int a:arr){

         System.out.println(a);

     }

你可能感兴趣的:(java)