- 浏览: 521845 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (114)
- C基础 (1)
- C指针 (0)
- C语言库函数相关 (1)
- Linux (2)
- Linux网络编程 (1)
- PostgreSQL (0)
- Redis (2)
- Java Web (2)
- JAVA基础 (35)
- Ubuntu (8)
- Android (2)
- MySQL (3)
- 日志 (1)
- 书虫 (1)
- 数据结构 (0)
- 算法 (0)
- 开发工具 (1)
- 转载 (13)
- 英语 (18)
- tomcat启动脚本分析 (3)
- Oracle基础 (4)
- tomcat源码分析 (3)
- tomcat (1)
- Java相关 (1)
- Oracle基本原理--Oracle体系结构 (0)
- Oracle基本原理--表 (0)
- Oracle基本原理--索引 (0)
- Oracle基本原理--事务 (0)
- Oracle开发--SQL (1)
- Oracle基本原理--PL/SQL (0)
- Oracle基本原理--常用函数 (0)
- Oralce管理--用户及权限管理 (0)
- Oracle管理--安装调试 (0)
- Oracle管理--备份恢复 (0)
- Oralce管理--数据迁移 (0)
- Oracle管理--闪回 (0)
- Oracle管理--故障处理 (0)
- Oracle优化原理--统计信息 (0)
- Oracle优化原理--执行计划 (0)
- Oracle优化原理--诊断工具 (0)
- Oracle优化原理--深入理解表 (0)
- Oracle优化原理--深入理解索引 (0)
- Oracle优化原理--表连接原理 (0)
- Java--OOP (0)
- Java--异常 (0)
- Java--泛型 (0)
- Java--集合 (0)
- Java--IO (0)
- Java--枚举类型 (0)
- Java--注释 (0)
- Java--多线程 (0)
- Java--XML (0)
- Java--JDBC (3)
- Servlet (0)
- JSP (0)
- JSTL (0)
- 设计模式 (0)
- DAO与MVC (0)
- Javascript (2)
- Ajax (0)
- JQuery (0)
- HTML/CSS (0)
- 前端相关 (1)
- HTTP (0)
- TCP/IP (0)
- GO基础 (0)
最新评论
-
jsonmong:
推荐一个开发平台,采用的是插件化的设计思想,效果很不错的。ht ...
构建Java Web开发环境 -
wxm198427:
首先表示辛苦了!我想问个问题:我的是windows 7 x64 ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
握着橄榄枝的人:
我之前按照你的update mysql.user set pa ...
Windows7下MySQL5.5.20免安装版的配置 -
confident_f:
安装了32的客户端后,用plsql导入导出表有问题,生成不了d ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
confident_f:
安装数据库的时候第9步卡住了 是怎么回事呢?
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
对于类引用数据类型的赋值操作,类引用变量存储的是对象的引用,两个变量之间的赋值就是将一个变量存储的对象引用赋给另一个变量,最终使得这两个变量引用同一个对象,因此此时无论通过哪一个引用变量来操作对象,都会影响到另一个引用变量所引用的对象。
注意:引用类型可进行赋值的条件是在赋值运算符“=”的左边的变量被显式声明的类型必须与“=”右边的变量的类型相同或有继承关系,否则编译出错。
例如:创建类A的两个对象并分别赋值给类型为A的两个变量,这样引用变量mya与myb就分别引用了两个对象,此时通过这两个引用变量来操作对象都不会影响到对方。
类A的代码如下:
创建类A的两个对象,并通过引用变量进行引用,然后通过引用变量来操作这两个对象,代码如下:
运行结果如下:
mya.name:a
myb.name:b
下面对上面的代码进行修改,将变量myb赋给变量mya,修改代码如下:
运行结果如下:
mya.name:b
myb.name:b
mya.name:c
myb.name:c
mya.name:d
myb.name:d
从结果可以看出,通过“mya = myb;”赋值操作后,引用变量mya与myb引用了同一个对象,因此通过其中任何一个变量来操作被引用的对象都会影响到另一个变量所引用的对象。
但在执行了“mya = myb;”表达式后,如果将一个引用变量赋值为null,即让该变量不引用任何对象,那么此时的另一个引用变量时不受影响的。
例如下面的代码,将变量myb赋值给变量mya后,再将mya赋值为null:
运行结果如下:
mya.name:b
myb.name:b
myb.name:b
注意:引用类型可进行赋值的条件是在赋值运算符“=”的左边的变量被显式声明的类型必须与“=”右边的变量的类型相同或有继承关系,否则编译出错。
例如:创建类A的两个对象并分别赋值给类型为A的两个变量,这样引用变量mya与myb就分别引用了两个对象,此时通过这两个引用变量来操作对象都不会影响到对方。
类A的代码如下:
public class A{ private String name; //定义一个String类型的成员变量 public void setName(String name){ //设置成员变量值的方法 this.name=name; } public String getName(){ //返回成员变量值的方法 return this.name; } }
创建类A的两个对象,并通过引用变量进行引用,然后通过引用变量来操作这两个对象,代码如下:
A mya = new A();//创建类A的一个对象,由变量mya进行引用 A myb = new A();//创建类A的另一个对象,由变量myb进行引用 mya.setName("a");//通过引用变量mya调用对象的setName()方法设置成员变量值为“a” myb.setName("b");//通过引用变量myb调用对象的setName()方法设置成员变量值为“b” System.out.println("mya.name:"+mya.getName());//通过变量mya调用被引用对象的getName()输出成员变量值 System.out.println("myb.name:"+myb.getName());//通过变量myb调用被引用对象的getName()输出成员变量值
运行结果如下:
mya.name:a
myb.name:b
下面对上面的代码进行修改,将变量myb赋给变量mya,修改代码如下:
A mya = new A(); A myb = new A(); mya.setName("a"); myb.setName("b"); mya = myb;//将引用变量myb赋值给引用变量mya System.out.println("mya.name:"+mya.getName()); System.out.println("myb.name:"+myb.getName()); mya.setName("c");//通过引用变量mya调用所引用对象的setName()方法,设置成员变量值为“c” System.out.println("mya.name:"+mya.getName()); System.out.println("myb.name:"+myb.getName()); myb.setName("d");//通过引用变量myb调用所引用对象的setName()方法,设置成员变量值为“d” System.out.println("mya.name:"+mya.getName()); System.out.println("myb.name:"+myb.getName());
运行结果如下:
mya.name:b
myb.name:b
mya.name:c
myb.name:c
mya.name:d
myb.name:d
从结果可以看出,通过“mya = myb;”赋值操作后,引用变量mya与myb引用了同一个对象,因此通过其中任何一个变量来操作被引用的对象都会影响到另一个变量所引用的对象。
但在执行了“mya = myb;”表达式后,如果将一个引用变量赋值为null,即让该变量不引用任何对象,那么此时的另一个引用变量时不受影响的。
例如下面的代码,将变量myb赋值给变量mya后,再将mya赋值为null:
A mya = new A(); A myb = new A(); mya.setName("a"); myb.setName("b"); mya = myb; System.out.println("mya.name:"+mya.getName()); System.out.println("myb.name:"+myb.getName()); mya = null; //将变量mya赋值为null,则mya不引用任何对象 System.out.println("myb.name:"+myb.getName());
运行结果如下:
mya.name:b
myb.name:b
myb.name:b
发表评论
-
foreach循环
2013-06-24 16:15 1495从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1224从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20741.为什么引入泛型 package generic; ... -
两个程序的说明
2010-10-19 09:26 11661、程序1的结果是: clas ... -
构造器初始化
2010-10-18 14:42 1535可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1247Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1524当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1290一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1295JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 20271、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 1078线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 41391、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5648在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2795常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1289栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1133问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1136//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2159在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1127在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21555、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ...
相关推荐
#### 二、引用类型赋值过程解析 当我们对引用类型的变量进行赋值操作时,实际上是将源变量所指向的内存地址复制给目标变量。这样两个变量就会指向同一块内存区域。下面通过具体示例来进一步理解这一概念。 #### 三...
// 引用类型赋值 User newUser = user; user.Name = "NewName"; Console.WriteLine($"Original user name: {newUser.Name}, Copied user name: {user.Name}"); // 输出:Original user name: NewName, Copied ...
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建...
需要注意的是,易语言中的自定义数据类型在内存中是以值传递的方式进行操作的,这意味着当你将一个自定义数据类型的变量赋值给另一个变量时,实际上是复制了整个数据结构的内容,而不是引用。这种机制在处理大量数据...
Java的数据类型可以分为两类:基本数据类型和引用数据类型。基本数据类型包括byte、short、int、long、float、double和char,它们代表了不同的数值类型。引用数据类型包括类、接口和数组,它们可以用来创建更复杂的...
数组类型赋值及改变是编程中常见的操作,特别是在C/C++这样的语言中,数组的处理需要特别注意,因为它们不是对象,而是直接在内存中分配的一段连续空间。本篇文章将深入探讨数组类型赋值和改变值的技巧,以及如何...
数据类型与引用数据类型在内存结构上的主要区别在于它们存储方式和内存分配的不同。在Java中,数据类型分为两种:基本数据类型(如int、char、boolean等)和引用数据类型(如对象、数组等)。 一、基本数据类型 ...
当一个变量被赋值为引用数据类型时,实际上是在内存中创建了一个对象,并将对象的地址赋值给变量。这意味着多个变量可以指向同一个对象,从而实现数据共享。例如,Java和C#中的类实例就是引用数据类型。 4. 自定义...
引用数据类型则包括类、接口、数组和委托,它们都是对象的实例。 1. 整型:C#提供了多种整数类型,包括byte(8位无符号整数)、sbyte(8位有符号整数)、short(16位有符号整数)、ushort(16位无符号整数)、int...
在Java编程语言中,数据类型是程序设计的基础,它们分为两大类:基本数据类型和引用数据类型。这个压缩包“Java数据类型操作包含转换代码实例.rar”提供了丰富的代码示例,帮助初学者理解和掌握Java中数据类型的转换...
事件赋值操作是Delphi中一个重要的概念,它允许我们动态地将一个方法绑定到特定的事件上。下面将详细探讨Delphi事件赋值操作的相关知识点。 1. **事件声明**: 在Delphi中,事件通常作为类的成员声明,其语法如下...
例如,较小的数据类型(如int)可以被赋值给较大的数据类型(如long long),这被称为提升(Promotion)。同样,常量表达式或字面量可以被转换为任何兼容的类型。然而,需要注意的是,隐式转换可能会导致精度丢失或...
在VC++编程环境中,了解和熟练掌握常用的数据类型及其操作是至关重要的。本文将深入探讨VC++中的基本数据类型,包括它们的定义、用途以及如何进行常见操作。 1. **基本数据类型** - `char`: 用于存储单个字符,如...
首先,C#的数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括整型(如int、byte、short、long等)、浮点型(如float、double)、字符型(char)、布尔型(bool)以及空类型(null)。这些类型由...
10. **作用域解析运算符`:=`与赋值操作符`=`:`=:`是C++中的作用域解析运算符,用于标识命名空间或类的成员,而`=`是赋值操作符,两者在代码中有着完全不同的用途。 以上只是教程中可能涉及的部分内容。通过这18页的...
下面将详细介绍如何进行条件赋值操作以及相关工具的使用。 1. **条件格式化**:这是Excel中最基础的条件赋值形式,它能改变单元格的样式(如字体颜色、背景色、边框等)来突出显示满足特定条件的数据。例如,你可以...
它接受一个常量引用类型的参数,通常是对同一类类型对象的引用。当使用等号操作符(`=`)在声明时初始化对象或者将对象作为函数参数传递时,拷贝构造函数会被调用。对于包含动态分配内存的类,如果不自定义拷贝构造...
在 Java 中,引用类型的变量可以通过赋值操作来改变其指向的对象,例如 MyDate a, b; a = new MyDate(); b = a;这里的 a 和 b 变量都指向同一个 MyDate 对象。 在函数传递方面,Java 中的引用类型的变量也可以作为...
引用数据类型则包括类、接口和数组,它们都指向内存中的对象地址。 运算符在Java中起着至关重要的作用,它们用于执行各种计算、比较和逻辑操作。Java支持以下类型的运算符: 1. **算术运算符**:+、-、*、/、%。...
Java的数据类型主要分为两大类:原始数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。 ##### 2.1 原始数据类型 原始数据类型包括整型、浮点型、布尔型和字符型等,它们直接存储具体的...