深入理解Java对象创建与存储

需积分: 0 2 下载量 174 浏览量 更新于2024-07-27 收藏 213KB DOC 举报
"这是一份关于《java编程思想》的详细笔记,涵盖了对象创建、类定义、函数与参数、注解和程序流程控制等多个核心概念。" 在Java编程中,一切皆对象,这一理念贯穿于整个语言设计之中。在第二章"万事万物皆对象"中,笔记详细介绍了对象的存储位置: 1. **对象存储**:对象可以存在于寄存器、栈(stack)、堆(Heap)、静态存储区(Staticstorage)以及常量存储区(Constantstorage)和非RAM存储(NON-RAM)。其中,基本类型的变量存储在栈中,而对象实例则存储在堆中,栈中仅存储指向这些对象的引用。数组也是对象,数组本身在堆中创建,而数组中的元素(通常是引用)在栈上。 2. **基本类型与对象**:基本类型数据直接存储在栈上,而对象的引用存放在栈中,指向堆中的对象实例。这意味着,即使没有显式初始化,对象引用也会默认为null。 3. **类(Class)的创建**:类是用来定义新数据类型的蓝图,包括数据成员(字段)和方法。数据成员如果没有初始化,Java会为其提供默认值,但这只适用于类的成员变量,局部变量需要显式初始化。 在讨论到函数(Methods)和参数(Arguments)时,笔记指出: 1. **参数传递**:当函数参数是对象时,传递的是对象的引用,而非对象的副本。这意味着,如果在函数内部修改对象的属性,会影响到原始对象的状态。 在注解(Annotations)部分,笔记提到了内嵌式文档注解的两种形式:`/*XXXX*/` 和 `//XXXX`。注解在Java中用于元数据,可以帮助编译器、构建工具或运行时环境理解代码的特定方面。 第三章"控制程序流程"中,笔记讲解了运算符的使用,特别是关系运算符: 1. **关系运算符**:比较两个对象时,实际上是比较它们的引用(object reference)。例如,两个`Integer`对象即使数值相同,如果由不同的`new`操作创建,它们的引用也是不同的,因此`n1==n2`的结果将是`false`。`equals()`方法被重写以进行值的比较,所以`n1.equals(n2)`将返回`true`,因为它比较的是对象的值而非引用。 这份笔记详尽地概述了Java编程的基础概念,对于学习和理解Java的对象模型、类定义、函数调用以及程序流程控制提供了清晰的指导。