Java里面对象的传递是通过对象的引用,而引用又是用变量名表示的,但是注意变量名不是引用本身。如下示例程序:
变量c的重新赋值并不影响之前表示的引用(对象)。
/* * @(#)PassedReferenceWillNotChange.java 2014年5月7日 * * Copyright (c) 2014 Wu Owen. All rights reserved. */ package com.labj.main; /** * Passed object c is stored in B, when c is assigned to another object, object stored in B will not * change. * * @author owen */ public class PassedReferenceWillNotChange { public static void main(String[] args) { C c = new C(1); B b = new B(c); System.out.println("A.f()"); c = new C(2); // b.setC(c); b.g(); } } class B { C c; public B(C c) { this.c = c; } void g() { System.out.println("B.g()"); System.out.println("c.getId(): " + c.getId()); } void setC(C c) { this.c = c; } } class C { int id; public C(int id) { this.id = id; } int getId() { return id; } }
相关推荐
Java 是传值还是传引用,问题主要出在对象的传递上,因为 Java 中简单类型没有引用。既然争论中提到了引用这个东西,为了搞清楚这个问题,我们必须要知道引用是什么。 简单的说,引用其实就像是一个对象的名字...
数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。 注意:如果...
对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...
作用域决定了在其内定义的变量名的可见性和生命周期。在C,C++和java中,作用域由花括号的位置决定。例如: { int x=12; //只有x 可用 { int y=100; //x,y 都可用 } //只有x 可用 //y ...
2.如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。 3.如果引用是类的成员变量,则必须当场赋值,否则编译会报错。 (2)用来修饰一个方法 当使用...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...
候虽然可以扩充类的功能,但是其本身也存在以下限制:在java 中不允 许多重继承:一个子类只能继承一个父类,不能继承多个父类; 在java 中允许多层继承,在继承中子类不能访问父类中的私有操作,而 只能继承全部的...
因为子类中的成员变量或方法名优先级高, 所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法, 但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super. 。。。。。。。。。。。。。
引用类型变量的Equals比较的是二者的引用地址而不是内部的值,值类型变量的Equals方法比较的是二者的值而不是……哦对了,值类型压根儿没有引用地址; • 值类型不能作为其它任何类型的基类型,因此不能向值类型中...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...
由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 18、heap和stack有什么区别。 栈是...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...
5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3...
JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...
final使得被修饰的变量"不变",但是由于对象型变量的本质是"引用",使得"不变"也有了两种含义:引用本身的不变,和引用指向的对象不变。 引用本身的不变: final StringBuffer a=new StringBuffer("immutable...
(2)C++的优点 C++是对 C 语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从 SIMULA 67 中吸取了 类,从 ALGOL 68 中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了 Ada 的 类属和 Clu ...
10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 ...
(2)C++的优点 C++是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和 Clu的模块特点,...