一代码示例
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段代码执行完后的内存情况。
相关推荐
内存初始化的模式可以根据具体的应用需求而变化。一般而言,常见的初始化模式包括: 1. **清零**:将内存区域的值全部设为0,这是最基础也是最常用的初始化方式。 2. **设定特定值**:根据系统设计需求,将内存中的...
- 非零初始化:未初始化的引用类型变量默认为null。 3. 类与结构的区别 - 结构(Struct)是值类型,而类(Class)是引用类型。 - 结构的实例化和操作更高效,类则支持更复杂的继承和多态。 - 结构不支持继承,而类...
### C语言中指针引用多维数组的教学实践 #### 一、指针在C语言中的重要性 C语言是一种基础且重要的编程语言,被众多院校作为程序设计的入门语言。然而,C语言也因其语法的灵活性和变化多端的特点而被认为难以掌握...
在第四章“数组与方法”中,我们重点探讨了数组的引用传递这一关键概念。理解这个概念对于编写高效、可维护的Java代码至关重要。 首先,数组在Java中被视为对象,这意味着它们在内存中的存储方式与其他对象相同。当...
- 静态初始化是在声明数组的同时为其元素分配空间并赋值,例如:`int intArray[]={1,2,3,4}; String stringArray[]{"aaa", "bbb", "ccc"};` - 动态初始化则先声明数组,然后在另一行代码中通过`new`关键字分配空间并...
- **知识点**: 正确的初始化语句应当正确地定义数组的类型和长度,并初始化数组的元素。选项D中的'hello'应为{"h","e","l","l","o"}。 2. **错误的引用** - **知识点**: 数组下标应该在有效范围内,`a[10]`超出...
如果只给出了部分初始值,剩余的成员将使用默认的零初始化(对于数值类型通常是0,对于引用和指针是NULL,对于类类型是调用默认构造函数)。 比如定义一个结构体X: ```cpp struct X { int i; float f; char c; ...
数组声明后必须初始化,使用new关键字分配内存空间,并且指定数组长度。数组的初始化可以发生在声明时,也可以在之后使用花括号{}赋值。数组的元素通过下标(索引)来访问,下标从0开始。 数组作为一种特殊的类,每...
10. **示例代码**:为了便于学习和使用,压缩包中的`ArrayClass.cls`文件可能包含了使用这个自定义数组类的示例代码,展示了如何实例化、填充、操作和清理数组对象。 通过理解和应用这些关键知识点,开发者可以充分...
在LabVIEW编程环境中,波形图表是用于可视化...掌握以上知识点后,你就能在LabVIEW中有效地设置和初始化波形图表的系统时间,创建出能够实时反映系统时间变化的动态图表了。这在监控、数据分析和测试应用中非常有用。
- **目的:** 定义并模拟实现一种整型多维数组类型。 - **特点:** 支持任意整数开始的连续整数作为下标。 - **功能要求:** - 定义整型多维数组类型(以3维为例)。 - 下标变量赋值,并进行下标范围检查。 - 同...
`initArray()`函数初始化这个结构体,`insert()`函数负责在数组末尾插入新的元素,如果当前容量不足,会通过`realloc()`进行扩展。`clearArray()`函数则释放动态分配的内存,重置数组状态。`countDuplicates()`函数...
这里的`()`表示使用默认构造函数初始化数组,对于基本类型如int,这意味着所有元素被初始化为0。 3. 释放内存:使用完动态数组后,记得使用`delete[]`释放内存,防止内存泄漏: ```cpp delete[] arr; ``` 二、二...
1. **初始化动态数组**:首先需要分配一段内存空间作为数组的初始空间。通常会先设定一个较小的初始大小,例如128个元素。 ```c int current_element = 0; // 当前元素数量 int total_element = 128; // 总元素...
打印`a[1][1]`、`a[2][1]`和`a[3][1]`的结果是5、0、0,因为二维数组的元素数量是由初始化时提供的元素数量决定的,对于`a[3][1]`,由于没有提供值,所以它实际上是未定义的,打印出0是因为内存中的随机值。...
首先为行指针数组分配内存,然后为整个二维数组分配内存,并初始化所有元素为0,最后设置每一行的起始地址。 通过以上内容,我们可以看到在C语言中动态分配二维数组的方法和步骤。正确使用这些技术可以帮助我们在...
- 静态初始化数组:`MyObj[] myObj4 = {new MyObj(), new MyObj(), new MyObj()};` - 动态初始化数组:`myObj1 = new MyObj[]{new MyObj(), new MyObj(), new MyObj(), new MyObj()};` - 通过函数返回数组:`...
根据Solidity的官方手册,结构体作为局部变量时默认存储位置是storage,因此,如果它没有被初始化,它的内部字段可能会错误地引用到其他变量,导致合约状态被破坏。 #### 解决方案 文档中为结构体和数组的未初始化...
在易语言中,动态调整数组大小的能力是非常有用的,特别是在程序运行过程中需要根据需求变化调整存储空间的情况。下面我们将深入探讨这个主题。 首先,让我们了解一下“重定义”多维数组的概念。在传统的编程中,...
创建数组使用`new`关键字,指定数组类型和元素数量。例如: ```java int[] ai = new int[10]; String[] aS = new String[3]; Circle[] aC = new Circle[5]; ``` 6.1.3 数组元素的初始化 数组元素可以在声明时初始化...