一代码示例
class Person { public int age; // 年龄 public double height; // 身高 // 定义一个info方法 public void info() { System.out.println("我的年龄是:" + age + ",我的身高是:" + height); } } public class ReferenceArrayTest { public static void main(String[] args) { // 定义一个students数组变量,其类型是Person[] Person[] students; //a // 执行动态初始化 students = new Person[2]; //b // 创建一个Person实例,并将这个Person实例赋给zhang变量 Person zhang = new Person(); // 为zhang所引用的Person对象的age、height赋值 zhang.age = 15; zhang.height = 158; // 创建一个Person实例,并将这个Person实例赋给lee变量 Person lee = new Person(); // 为lee所引用的Person对象的age、height赋值 lee.age = 20; lee.height = 172; //c // 将zhang变量的值赋给第一个数组元素 students[0] = zhang; // 将lee变量的值赋给第二个数组元素 students[1] = lee; //d // 下面两行代码的结果完全一样,因为lee // 和students[1]指向的是同一个Person实例。 lee.info(); students[1].info(); } }
二运行结果
我的年龄是:20,我的身高是:172.0
我的年龄是:20,我的身高是:172.0
三结果分析
图一是a段代码执行完后的内存情况。
图二是b段代码执行完后的內存情况。
图三是c段代码执行完后的内存情況。
图四是d段代码执行完后的内存情况。
相关推荐
在实际开发中,我们可能会遇到需要从字节数组初始化String对象的情况。这个例子4-6就是为了展示这种操作的具体实现。让我们详细探讨一下这个话题。 首先,我们要理解String类的基本构造函数之一,它接受一个字节...
同时,`ArrayTest02`展示了引用类型数组(`Student[] student`)的声明和初始化,以及`Student`类的定义。`ArrayTest03`中虽然没有完整的代码,但可以看出继续探讨引用类型数组的使用,特别是初始化和赋值的过程。 ...
- 非零初始化:未初始化的引用类型变量默认为null。 3. 类与结构的区别 - 结构(Struct)是值类型,而类(Class)是引用类型。 - 结构的实例化和操作更高效,类则支持更复杂的继承和多态。 - 结构不支持继承,而类...
在`Start()`方法中,一般会初始化脚本中的变量,但在这个例子中,没有进行任何初始设置。 在`Update()`方法中,监听了F11键的按下事件。当F11键被按下时,`y`的值会递增,并调用`mm`方法来改变贴图。通过这种方式,...
3. **初始化序列**:ST7701的初始化需要一系列特定的寄存器设置,这些设置定义了屏幕的分辨率、电压源、偏压比、像素格式等。初始化序列通常包括写入多个命令字节到ST7701的特定地址。 4. **写命令/数据**:通过...
如果只给出了部分初始值,剩余的成员将使用默认的零初始化(对于数值类型通常是0,对于引用和指针是NULL,对于类类型是调用默认构造函数)。 比如定义一个结构体X: ```cpp struct X { int i; float f; char c; ...
在LabVIEW编程环境中,波形图表是用于可视化...掌握以上知识点后,你就能在LabVIEW中有效地设置和初始化波形图表的系统时间,创建出能够实时反映系统时间变化的动态图表了。这在监控、数据分析和测试应用中非常有用。
使用 Array() 构造函数可以创建一个空数组、带有初始元素的数组、指定长度的数组等。数组直接量是一种简洁的创建数组的方式,只需要将元素用逗号分隔,放入方括号中即可。 数组的 length 属性是一个特殊的属性,它...
为将一个数组初始化可以使用 new 关键字,也可以使用赋值语 句进行初始化。数组一旦被创建,就不能改变它的大小。 例如: a = new int[10]; //将 a 初始化为大小为 10 的整型数组。 int[] b = {0,1,2,3} //将 b ...
在易语言中,动态调整数组大小的能力是非常有用的,特别是在程序运行过程中需要根据需求变化调整存储空间的情况。下面我们将深入探讨这个主题。 首先,让我们了解一下“重定义”多维数组的概念。在传统的编程中,...
根据Solidity的官方手册,结构体作为局部变量时默认存储位置是storage,因此,如果它没有被初始化,它的内部字段可能会错误地引用到其他变量,导致合约状态被破坏。 #### 解决方案 文档中为结构体和数组的未初始化...
在编程领域,尤其是在图形化编程环境如LabVIEW中,改变数据表示形式,如数组的背景颜色,是一种常见的需求。这可以提高程序的可读性,帮助用户更好地理解数据的含义和变化。以下是对"数组颜色_数组中背景色改变_"这...
C++目前实现大位数加减法,支持INT类型数组,并支持单元多位数存储,从而轻松扩展数组存储达到最大位数。如声明十万数组每单元存储一位数则可以运算十万位数,扩展每单元存储8位数则可达到80万位数的运算,INT安全才...
本篇将详细阐述二维数组的定义、内存存储、初始化及引用方式。 1. 二维数组的定义与内存存储 二维数组可以视为特殊的一维数组,其元素是另一个一维数组。例如,对于一个3x4的二维数组a,可以理解为一个包含3个元素...
数据类型与引用数据类型在内存结构上的主要区别在于它们存储方式和内存分配的不同。在Java中,数据类型分为两种:基本数据类型(如int、char、boolean等)和引用数据类型(如对象、数组等)。 一、基本数据类型 ...
- **初始化**:可以通过嵌套循环或者直接初始化列表来初始化二维数组。 - 使用循环:`for (int i = 0; i ; i++) for (int j = 0; j < 4; j++) cin >> b[i][j];` - 直接初始化:`int b[3][4] = {{1, 2, 3, 4}, {5, ...
多维数组是指具有多个维度的数组,这种数组可以表示为矩阵、立方体、四维数组等形式。 一、数组(向量) 数组是一种基本的数据结构,广泛应用于编程语言中。数组可以看作是一种容器,存储多个具有统一类型的数据...
- **初始化二维字符数组**:可以通过直接赋值的方式来初始化二维字符数组,例如: ```c char a[5][10] = { {0, 2, 2, 2, 2, 2, 2, 2, 2, 2}, {0, 0, 2, 2, 2, 2, 2, 2, 2, 2}, {2, 0, 2, 2, 2, 0, 0, 0, 2, 2},...
这里假设枚举值的顺序与数组索引对应,但当枚举顺序发生变化时,数组初始化就会出错。为了解决这个问题,可以使用下标初始化,确保每个元素映射到正确的枚举值: ```c Enum { FRUIT_APPLE, FRUIT_PEAR, FRUIT_...
程序初始化一个包含5个元素的数组`array`,然后从最后一个元素开始,逆序输出数组的值。 - 【例4.2】则将上述例子的数组元素引用方式进行变化,虽然没有给出完整代码,但可以理解为对数组元素引用的不同形式,可能...