Java基础-数组
概念
数组是相同数据类型元素的集合。
详细解释
- 数组本身是引用数据类型,即对象。到那时数组可以存储基本数据类型,也可以存储引用数据类型。
- 数组是一种线性数据结构。
- 数组其实就是一个容器。
- 可以自动给数组中的元素从0开始编号,方便操作这些元素。
数组声明的两种方式
-
数组类型 [] 数组名字 举例:int [] a;
-
数组类型 数组名字 [] 举例:int a [];
-
Java数组在创建时必须给给定的长度,一旦定义就不可修改
-
在内存空间中是一个连续的空间 为其中每个存储空间初始化值
注:在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型。
数组创建的三种方式
-
声明数组的同时,根据指定的长度分配内存,但数组中的元素都为默认的初始化值。
int [] a = new int[10];
-
声明数组并分配内存,同时将其初始化
int [] b = new int[]{1,2,3,4,5,6};
-
相对简略的语法,与前一种方式相同
int [] c = {1,2,3,4,5,6};
静态和动态创建
-
动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char [] d = new char[10];
-
静态创建数组(在创建的时候,为每一个元素赋初值)
int e = new int{1,2,3,4,5,6};
数组长度
使用length属性
int [] a = new int []{1,2,3,4,5,6};
System.out.println(a.length);
数组元素的访问
数组名字[索引] 例如:a[0] , a[1];
注:
- 数组的索引从0开始。
- 索引的数据类型是整数。
- 索引最大值和数组长度始终差1。
数组迭代的两种方式
-
for循环
int [] a = new int []{1,2,3,4,5,6}; for(int i = 0;i < a.length;i++){ System.out.println(a[i]); }
-
增强for循环
int b = new int []{1,2,3,4,5,6}; for(数组元素的类型 临时变量名字 : 数组的名字){ System.out.printl(临时变量的名字); } 即 for(int x : a){ System.out.println(x); }
代码演示
import java.awt.*;
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
int [] a = new int[10];
int b [] =new int[10];
//创建时直接初始化,根据内容的数量来确定数组的长度.
int c [] = new int[]{1,2,3,4,5,6,7,8,9};
//创建数组的三种方式
int [] d = {1,2,3,4,5,6};
System.out.println(a);
//[I@1b6d3586 这是对象的hashCord,默认调用的Object中的hashCord方法
System.out.println(Arrays.toString(a));
//需要调用此方法才能正确显示数组
System.out.println(Arrays.toString(c));
Car car0 = new Car("car0");
//一旦创建对象就会在堆空间中有一个存储位置
//中如果存储的是基本类型,存储的是具体的值
Car car1 = new Car("car1");
Car car2 = new Car("car2");
Car car3 = new Car("car3");
Car car4 = new Car("car4");
//如果存储的是引用类(类类型),会存储对向的引用
Car[] cars = new Car[]{car0,car1,car2,car3,car4};
System.out.println(Arrays.toString(cars));
}
}
public class Car {
private String name;
public Car(String name){
this.name =name;
} //构造方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "name:"+this.name;
}
}
数组访问和索引
import java.util.Arrays;
public class ArrayDemo2 {
public static void main(String[] args) {
int a [] = new int[5];
System.out.println(Arrays.toString(a));
/*
访问数组元素
数组中每个位置都会有一个索引(下标,标号)
索引类型时整数
区间: 0--数组的长度-1
数组长度
注意使用合法的索引访问,否则会程序终止,抛出异常
*/
byte b = 10;
a[0] = b;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
//a[5] = 3;,不合法,运行时才会出现的异常(数组越界)
System.out.println(Arrays.toString(a));
System.out.println(a.length);
System.out.println(a[0]);
int [] c = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < c.length;i++){
System.out.println(c[i]);//取出数组第i个元素
}
//增强for循环
//foreach循环 jdk5以后更新,不用计数
for( int itam : c ){
System.out.println(itam);
}
}
}