Java语言中除8种基本数据类型以外的数据类型称为引用类型,或复合数据类型。
引用类型的数据都是以某个类的对象的形式存在的,我们在程序中声明的引用类型变量只是为该对象起的一个名字,或者说是对该对象的引用,变量的值是对象在内存空间中的存储地址而不是对象本身,这就是称之为引用类型的原因。
引用类型数据以对象的形式存在,其构造和初始化以及赋值的机制都是与基本数据类型的变量有所不同。
声明基本数据类型的变量时,系统同时为该变量分配存储器空间,此空间中将直接保存基本数据类型的值。
而声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象或者说并没有为对象分配存储器空间,将来在创建一个该引用类型的对象后,再使变量和对象建立对应关系。可以这样来看,我们声明的引用类型变量,就是一把钥匙(引用),而将来创建的,并与变量建立对应关系的对象,才是我们真正要操作的数据,相当于一个放满我们需要数据和操作的仓库。
这里简单来说说我们声明一个引用类型变量,以及与之对应的对象创建的过程。
以前面的Student类为例。
Student s1;
s1 = new Student("Lisa","Male",1,18);
System.out.println("学生s1姓名: " + s1.getName());
Student s2;
s2 = s1;
s1.setName("Sophie");
System.out.println("学生s2姓名:"+s2.getName());
这个代码段的作用是建立并初始化了两个Student引用类型数据,我们以对象s1为例讲解引用类型数据的初始化过程(对象的初始化过程):
1. 执行语句“Student s1;”时,系统为引用类型变量s1分配引用空间(定长32位),此时只是定义了变量s1,还未进行初始化等工作,因此还不能调用Student类中定义的方法
2. 执行语句“s1 = new Student(”Lisa“,”Male“,1,18);”,
先调用构造方法创建一个Student类的对象----为新对象分配内存空间用来存储该对象所有属性(name,sex,grade,age)的值,并对各属性的值进行默认的初始化。
注意,在这个程序中,因为name和sex的类型是String类型,也是属于引用类型,所以它们的默认初始值也为null,
3. 接下来执行Student类的构造方法,继续此新对象的初始化工作,构造方法中又要求对新构造的对象的成员变量进行赋值,因此,此时name、sex、grade、age的值变成了“Lisa”、“Male”、1、18,
4. 至此,一个Student类的新的对象的构造和初始化构成已完成。最后再执行“s1 = new Student("Lisa","Male",1,18);”中的“=”号赋值操作,将新创建对象存储空间的首地址赋值给Student类型变量s1
于是引用类型变量s1和一个具体的对象间建立了联系,我们称s1是对该对象的一个引用。
最后,我们总结一下对象的构造及初始化程序:
1. 分配内存空间;
2. 进行属性的默认初始化;
3. (进行属性的显式初始化;)
4. 执行构造方法;
5. 为引用型变量赋值。
分享到:
相关推荐
62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....
多态性是Java引用类型的一个关键特性,允许你用父类引用指向子类对象。这使得代码更加灵活,能够处理不同类型的对象。例如: ```java Animal animal = new Dog(); // 父类引用指向子类实例 animal.eat(); // 调用...
Java 中的基本类型和引用类型变量的区别 Java 中的基本类型和引用类型变量是两个不同的概念,它们在内存分配、变量赋值和函数传递等方面有着本质的区别。 基本类型是 Java 中的八种基本类型,包括 byte、short、...
2. **数据类型与控制结构**: Java有两类数据类型:基本类型和引用类型。基本类型包括整型、浮点型、字符型和布尔型,而引用类型则是对象的别名。控制结构包括条件语句(if-else,switch-case)和循环(for,while,...
在这里,我们将对Java引用类型的一些关键知识点进行详细的阐述。 1. 类(Class):Java是一种面向对象的语言,类是创建对象的蓝图。它定义了对象的属性(数据成员)和行为(方法)。通过定义类,我们可以创建具有...
notInPack.java 用前缀引用包中的类 onlyShow.java 一个简单的接口 Outer_1.java 外部类示例1 Outer_2.java 外部类示例2 Outer_3.java 外部类示例3 Outer_4.java 外部类示例4 Outer_5.java 外部类示例5 ...
学习Java首先要掌握变量、数据类型(如基本类型和引用类型)、运算符、控制结构(如if语句、for循环、while循环)以及方法的定义和调用。 2. **类与对象**:Java是面向对象的语言,核心概念包括类、对象、继承、...
### 浅析Java引用类型和方法参数传递 #### 一、引言 在Java编程语言中,理解数据类型的处理方式对于编写高效、可维护的代码至关重要。本文将深入探讨Java中的引用类型及其如何影响方法参数的传递机制。通过具体实例...
7. Java中的数据类型 8. Java中的常量 二、变量和运算符 1. 变量和计算机存储单元 2. 数据类型和常量 3. 数据类型转换 4. 运算符 和 优先级 三、引用数据类型、流程控制语句 和 数组 1. 引用数据类型 2. ...
Java分为两大类数据类型:基本类型和引用类型。基本类型包括整型(如byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。这些类型的值是直接存储在内存中的,它们没有方法且不...
【Java 引用类型详解】 在Java编程语言中,引用类型是内存管理的一个重要概念,它允许程序员对对象的生命周期进行一定程度的控制。Java提供了四种不同级别的引用类型:强引用、软引用、弱引用和虚引用(幻象引用)...
* 变量和数据类型:Java语言的变量包括基本数据类型和引用类型,基本数据类型包括整型、浮点型、布尔型等,引用类型包括数组、类等。 * 运算符:Java语言的运算符包括算术运算符、关系运算符、逻辑运算符等。 * 控制...
6. **方法与构造器引用**:除了lambda表达式,Java 8还引入了方法引用和构造器引用,它们可以更直接地引用已有方法或构造器,简化代码。 7. **Optional类**:为了解决空指针异常问题,Java 8引入了`Optional`类,它...
在Java编程语言中,引用类型变量实际上是对象的引用或指针,而非对象本身。当我们讨论“引用类型传值”时,意味着在方法调用时,传递的是对象引用的一个副本,而不是对象本身。以下是对给定代码清单的详细解释: 1....
这是我在编写struts2中遇到的问题,整理出来,包括截图,希望可以帮到大家
3. **方法引用**:除了 Lambda,Java 8 还提供了方法引用,它可以直接引用已有方法,而无需显式写出方法体。这在 Lambda 表达式中特别有用,可以提升代码的可读性。 4. **Stream API**:Stream API 是 Java 8 的另...
`jsonlib`是一个与`org.json`相关的库,它提供了一套更全面的JSON处理功能,支持多种Java类型,如JDBC结果集、JavaBean、POJO等。如果你的项目中同时使用了`json.jar`和`jsonlib`,请确保它们不会冲突,因为它们可能...
从JDK 1.2版本开始,Java引入了一种更为精细的引用类型管理机制,通过四种不同的引用类型:强引用、软引用、弱引用和虚引用,让开发者能够更加灵活地控制对象的生命周期。这种机制不仅提升了Java应用程序对内存使用...
6. Java类和对象:Java中的空引用是指不指向任何对象的引用,Math类的所有方法都是静态方法,可以用类名直接调用该类中的方法。 7. 构造方法:构造方法名必须与类名相同,且不能返回值。 8. 类修饰符:用final修饰的...
在Java中,对象的引用方式对于内存管理和对象生命周期的控制至关重要。从JDK 1.2版本开始,Java引入了四种不同级别的引用:强引用(Strong Reference)、软...希望本文能够为您提供在Java引用类型的使用上清晰的指导