数组Array:java中的数组与C中的完全不一样。 相同类型的数据的集合叫做数组
如何定义数组:type[] 变量名 = new type[数组中元素的个数] 或者 int[] a = {1,2,3}; 或者 int[] a = new int[]{1, 2, 3, 4};
int[] a = new int[4]{1, 2, 3, 4};的书写格式是错的
int[] a = new int[4]; 表示我定义了一个int类型的数组,名字叫做a,这个数组的长度是4,开辟了16个字节的地址空间
Java中的每个数组都有一个名为length的属性,表示数组的长度。length属性是public,final,int的。数组长度一旦确定,就不能改变大小(例int[] a = new int[100]; a.length = 200;出错)
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a.equals(b));//结果为false,因为数组对象并没有对Object类中的equals方法进行重写,所以对象数组引用了Object类中的equals方法,比较两者的地址,两个数组对象,地址肯定不同
int[] a = new int[10]; 其中a是一个引用,它指向了生成的数组对象的首地址,数组中每个元素都是int类型,其中仅存放数据值本身。
public class Array
{
public static void main(String[] args)
{
Person[] p = new Person[10]; //内存中生成0个person对象,因为仅仅声明了数组本身,没有生成对象。数组中存放的是对象的引用,不是对象本身,我们只能通过引用来操纵对象。所以说这里的new有点欺骗的作用,实际没有创建对象
System.out.println(p[0]);
}
}
class Person
{
int age;
public Person(int age)
{
this.age = age;
}
}
复制代码
输出结果:null
引用数组中的各个元素都为引用类型,没赋初值的时候为null,表示不指向任何对象
public class Array
{
public static void main(String[] args)
{
Person[] p = new Person[10]; //内存中生成0个person对象,因为仅仅声明了数组本身,没有生成对象。数组中存放的是对象的引用,不是对象本身,我们只能通过引用来操纵对象。