数组
数组时相同类型数据的有序集合。描述的时相同类型的若干个数据,按照一定的先后次序排列组合而成。
其中,每一个数据称作一个元素,每个元素可以通过一个索引下标来访问它们。
特点:
- 长度时确定的,一旦被创建,它的大小就不可以改变
- 其元素必须是相同类型,不允许出现混合类型
- 数组类型可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组可以看作是对象,数组中的每个元素相当于该对象的成员变量
数组的声明有两种方式:
- type[ ] arr_name;//推荐使用这种方式
- type arr_name[ ];
注意:
- 声明的适合没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这个时候才有长度
- 声明一个数组的时候并没有数组被真正创建
- 构造一个数组,必须指定长度
package text;
public class text01 {
public static void main(String[] args) {
int[] arr01 = new int[10] ;//告诉系统数组长度为10,可以放10个int型变量
//索引下标[0, length-1]:0,1,2,3,4,5,6,7,8,9
String arr02[] = new String[5];
arr01[0] = 10;
// arr01[10] = 100; // java.lang.ArrayIndexOutOfBoundsException
//通过循环初始化数组
for(int i=0;i<arr01.length;i++){
arr01[i] = 10*i;
}
//通过循环读取数组里面元素的值
for(int i=0;i<arr01.length;i++){
System.out.println(arr01[i]);
}
User[] arr03 = new User[3];
arr03[0] = new User(10,"代红1");
arr03[1] = new User(100,"代红2");
arr03[2] = new User(1000,"代红3");
for(int i=0;i<arr03.length;i++){
System.out.println(arr03[i].getName());
}
}
}
class User{
private int id;
private String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建一维数组有三步骤:
- 声明数组(在栈内存Main栈帧中给一个变量入栈)
- 给数组分配空间(分配对应的堆内存,让栈中数组变量指向第一个元素)
- 给数组赋值(用下标单独赋值,循环赋值)
如果是引用对象,则new出来的对象把地址当成数组元素;基本类型直接存入数组中
数组的初始化
三种:静态初始化、动态初始化、默认初始化
代码如下:
package text;
public class text01 {
public static void main(String[] args) {
//静态初始化
int[] a = {2,4,65};
User[] b ={
new User(10,"代红1"),
new User(100,"代红2"),
new User(1000,"代红3")
};
//默认初始化
int[] c = new int[3];
//默认给数组的元素进行赋值。赋值的规则和成员变量默认赋值规则一致
//动态初始化
int[] a1 = new int[2];//动态初始化数组,先分配空间;
a1[0]=1;//给数组元素赋值;
a1[1]=2;//给数组元素赋值;
}
}
class User{
private int id;
private String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
数组的遍历_for-each
增强for循环for-each是JDK1.5新增的功能
作用:读取数组或集合中所有的元素——对数组进行遍历
package text;
public class text01 {
public static void main(String[] args) {
int[] a = new int[4];
//初始化数组元素的值
for(int i=0;i<a.length;i++){
a[i] = 100*i;
}
//读取元素的值
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
System.out.println("----------我是分隔符------------");
//foreach循环:用于读取数组元素的值,不能修改元素的值
//循环遍历a数组,放入m变量进行操作且m没有下标
for(int m : a){
System.out.println(m);
}
String[] ss = { "a", "b", "c", "d" };
for (String temp : ss) {
System.out.println(temp);
}
}
}