数组也是对象
要判断数组是不是对象,那么首先明确一下什么是对象,也就是对象的定义。
宏观方面来看,对象是根据某个类型创建出来的一个实例,表示某类事物中一个具体的个体。对象具有一些属性,并且具有一些特定的方法。
微观方面来看,对象就是内存中的一个内存块,在这个内存块中封装了一些数据,也就是类中定义的一些属性,方法,所以,对象是用来封装数据的。
以下以一个Person对象在内存中的表示:
class Person{
private String name;
private int age;
Person(){}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public int getAge() {
return age;
}
public void setId(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class test{
public static void main(String[] args){
Person p = new Person(“liming”,23);
}
}

p这个创建出来的对象属性是存放在堆里面的,其中的name属性是一个引用类型,引用了字符串常量池中"liming"所在的地址值,它指向了一个真实存在的字符串对象。
那么在java中,数组满足以上条件吗?
在较高层面来讲,数组不是某类事物中一个具体的个体,而是多个个体的集合。那么它应该不是一个对象。
在计算机的角度来说,数组也是一个内存块,也封装了一些数据,这样的话也可以称之为对象。
以下是一个数组在内存中的表示:

这样的话, 数组既可以是对象,也可以不是对象。
至于数组到底是不是对象,可以通过代码来验证:

在数组a上,可以访问它的属性,也可以调用一些方法。这基本可以认定:java中的数组也是对象,它具有java中其他对象的一些特点:封装了一些数据,可以访问属性,也可以调用方法。
所以,数组是对象!

浙公网安备 33010602011771号