- 浏览: 515556 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1436从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1197从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20251.为什么引入泛型 package generic; ... -
两个程序的说明
2010-10-19 09:26 11331、程序1的结果是: clas ... -
构造器初始化
2010-10-18 14:42 1481可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1199Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1468当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1249一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1231JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 19911、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 1002线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 40821、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5613在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2747常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1242栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1098问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1094//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2112在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1079在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21225、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ...
相关推荐
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建...
Java的数据类型可以分为两类:基本数据类型和引用数据类型。基本数据类型包括byte、short、int、long、float、double和char,它们代表了不同的数值类型。引用数据类型包括类、接口和数组,它们可以用来创建更复杂的...
值类型和引用类型的区别: 似乎“值类型和引用类型的区别”是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第... C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。
为语言间互操作性提供基本框架的通用类型系统(CTS)的层次结构 值类型、引用类型及其差异 ...预定义基本数据类型的使用 类型转换方法:隐式转换、显式转换(强制转换)和Convert类提供的类型转换方法
CString 拷贝 & 赋值 & "引用内存块" 什么时候释放? 4 FreeExtra()的作用 5 Format(...) 与 FormatV(...) 6 LockBuffer() 与 UnlockBuffer() 6 CString 只是处理串吗? 6 AllocSysString()与SetSysString(BSTR*) 7 ...
我的一句话总结:原始值不管是变量赋值还是函数传递都不会改变原值,引用值不管是变量赋值还是函数传递,如果新变量重新赋值,则不会影响原引用值,如新变量是直接操作,就会影响原引用值。 首先明确,值和类型是两...
作为一个PHP的新手,一直对PHP的引用困惑了很久,今晚仔细看了用户手册和做了一些实验,终于明白了其中的原理和细节,特别是=操作符对于不同类型的不同行为。
在进行赋值操作的时候,它和值类型一样,也是先有一个复制的操作,不过它复制的不是实际的数据,而是引用(真实数据的内存地址)。所以引用类型的变量在赋值的时候,赋给另一变量的实际上是内存地址。这样赋值完成后...
而通常不去显式地使用this指针来引用数据成员。同样也可以使用*this来标识调用该成员函数的对象。下面举一例子说明this指针的应用。 #include class A { public: A() { a=b=0; } A(int i, int j) { a=i; b=j...
==================内置数据类型========================= 第二章 009.程序的构成 010.对象的基本组成和内存示意图 011.引用的本质_栈内存和堆内存_内存示意图 012.标识符_帮助系统的简单使用_命名规则 013....
当我们进行赋值操作时,解析器会首先分析数据是值类型还是引用类型。 两种访问方式: 基本类型值:按值访问,操作的是他们实际保存的值; 引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再...
就拿博客园的首页右边的搜索举例吧,用控制台操作。 现在我需要从另外一个地方将数据传给input,让其在一刷新的时候就显示数据。 这不难啊,于是我按照我的理解做了 代码如下: 此时,id为zzk...
不填连接名称,默认找对应帮助类的数据库类型+Config。例如:MySql数据库,默认配置文件为:MySqlConfig 引用DbHelper.HelperMini命名空间,随之调用其方法即可 初始化:MySqlHelperMini helper = new ...
6.5 用类实现Time抽象数据类型 6.6 类范围与访问类成员 6.7 接口与实现方法的分离 6.8 控制对成员的访问 6.9 访问函数与工具函数 6.10 初始化类对象:构造函数 6.11 在构造函数中使用默认参数 6.12 使用析构...
10.8 有关指针的数据类型和指针运算的小结 167 10.8.1 有关指针的数据类型的小结 167 10.8.2 指针运算的小结 167 10.8.3 void 指针类型 168 11 结构体与共用体 11.1 定义一个结构的一般形式 170 11.2 结构类型变量的...
基本类型和引用类型 ECMAScript包含两个不同...这五种基本数据类型可以直接操作保存在变量中的实际值。 看下面例子: var a = 10; var b = a; b = 20; console.log(a); // 10 var bl = true; var bl1 = bl; bl1 =
数据类型是一个值的集合和定义在此集合上的一组操作的总称。 三、抽象数据类型(Abstract Data Type 简称ADT) 是指一个数学模型以及定义在此数学模型上的一组操作 ADT有两个重要特征: 数据抽象 用ADT描述程序处理的...
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 3. 将“引用”作为函数...