从数组的声明来看
type[] arr_name//方式一(推荐使用这种方式)
type arr_name[]//方式二
数据总共有两种,基本数据类型和引用数据类型,从数组的声明方式看,只能是引用数据类型,而引用数据类型只有对象
从数组的初始化来看
public class Test {
public static void main(String[] args) {
//数组的定义和初始化
int[] arr1=null;//
arr1=new int[5];//数组元素相当于对象的属性,遵守对象属性默认初始化
//动态初始化,根据索引直接赋值
System.out.println(arr1[0]);
//静态初始化,注意:静态初始化需在声明后直接初始化
int[] arr2={1,2,3};
for (int i=0;i<arr1.length;i++){
arr1[i]=i*2+1;
}
//数组的遍历
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
}
}
数组初始化有三种,静态初始化,动态初始化和默认初始化
在默认初始化中,对象的的默认初始化是null,而数组的默认初始化也是null
而数组里面的元素,根据声明的type类型决定,数组里面的元素的默认初始化也是依据于对象属性默认初始化进行的
从数组在JVM存放的位置看
对象在JVM存放的位置是堆中,而数组所存放的位置也是堆里面
从数组可调用的方法看
package ShuZu;
public class Test01 {
public static void main(String[] args) {
//静态初始化需在声明后直接初始化
Man[] mans={new Man(123,"zyp"),
new Man(1234,"zx"),
new Man(1234,"zxd"),
new Man(1234,"zxs"),
new Man(1234,"zxx")
};
for(int i=0;i< mans.length;i++){
Man man=mans[i];
System.out.println(mans[i].getName());
}
//增强for循环
for(Man m:mans){
System.out.println(m);//使用的toString方法不会加上去,是打印时加上去的
/*打出来是mans数组中每一个元素的地址,
想要打印出对象所具有的含义,需要重写toString方法*/
}
}
}
class Man extends Object{
private int id;
private String name;
public Man(){}//无参构造器
public Man(int id, String name) {//构造器来传参
this.id = id;
this.name = name;
}
public String toString(){
return "id"+id+",name"+this.name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {//为了让外界获取name属性
return name;
}
public void setName(String name) {
this.name = name;
}
}
当type是一个组织的类时,意味着数组里面的元素可以实例化为对象
而在增强for循环这段代码时,想要打出对象中原本的意义,用到了toString方法的重写,而toString方法是Object类里面,所以Man数组是Object子类,所以数组是对象