做设计用到的网站,北京营销型网站开发,wordpress 文章点赞数,前端seo是什么引用类型数组指向的元素也是引用。其本质是#xff1a;
由一个在栈上的引用数组变量指向一块堆内存#xff1b;这块堆内存里存储的元素是引用#xff0c;又分别指向其他堆内存。
class Person // Person是一个自定义的类
{public int age;puiblic double height;public vo…引用类型数组指向的元素也是引用。其本质是
由一个在栈上的引用数组变量指向一块堆内存这块堆内存里存储的元素是引用又分别指向其他堆内存。
class Person // Person是一个自定义的类
{public int age;puiblic double height;public void info(){System.out.println(blablabla...);}
}public class ReferenceArrayTest
{public static void main(String[] args){Person[] students; // 声明一个数组引用变量其元素是Person类的对象studens new Person[2]; // 动态初始化var zhang new Person(); // 对象的动态初始化zhang.age 15;zhang.height 158;var lee new Person();lee.age 16;lee.height 161;students[0] zhang; // 赋值实际上是改变指向students[1] lee;// 以下输出结果是一样的因为指向的同一块内存lee.info();students[1].info();}
}第5行数组声明这时候只是在栈上定义了一个变量没有指向堆内存如下图所示 第6行动态初始化此时students的每个元素数组引用变量或者说就是指针默认初始化为null如下图所示 第7~12行初始化两个对象类也是引用类型所以实际上开辟了4块内存zhang和lee位于栈上所指向的对象位于堆上。如下图所示 第13~14行赋值让students的两个元素数组引用变量分别指向zhang和lee指向的堆内存。