原帖地址:
http://www.iteye.com/topic/281012
看完问题之后,我进行了个测试,代码如下:
package cn.tofishes.collection;
import java.util.ArrayList;
import java.util.List;
public class ReferenceTest {
/* Person在传入方法前初始化 */
public static void setPerson(Person p) {
String name = "caiceclb";
int age = 22;
p.setAge(age);
p.setName(name);
}
/* Person在传入方法后初始化 */
public static void setPerson2(Person p) {
p = new Person();
String name = "caiceclb";
int age = 22;
p.setAge(age);
p.setName(name);
}
public static void setList(List<String> list) {
list.add("Hello world!");
}
public static void main(String[] args) {
Inner in = new Inner();
/* 传入前先给初始化 */
Person p = new Person();
List<String> list2 = new ArrayList<String>();
/* 传入前设为null */
Person p2 = null;
List<String> list = null;
/* 测试方法执行,
* 结果:传入前值为null,方法执行后依然是null
* 传入前合理初始化,方法执行后可以取出值
* */
in.Value(list);
ReferenceTest.setPerson(p);
ReferenceTest.setPerson2(p2);
ReferenceTest.setList(list2);
/* 输出正常 */
System.out.println(list2.get(0));
System.out.println(p.getName());
/* 以下这两句都会抛出异常 */
// System.out.println(list.get(0));
System.out.println(p2.getName());
}
}
class Inner {
public void Value(List<String> a) {
a = new ArrayList<String>();
a.add("Hello");
}
}
class Person {
private String name ;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
很有趣的引用传值问题。
PS:原帖错误蛮多的,有人回帖说标题子打错了,然后我发现他的描述也错误,
引用
public static void main(String[] args) throws CloneNotSupportedException, BusinessException {
List a = null;
B b = new B();
b.mm(a);
System.out.println(a); //这样打印出来应该是null,怎么会异常?!
}
分享到:
- 2008-11-28 09:31
- 浏览 890
- 评论(2)
- 论坛回复 / 浏览 (2 / 1496)
- 查看更多
相关推荐
【Java测试试题解析】 ...以上是对Java测试试题的详细解释,涵盖了Java基础语法、多线程、事件处理、异常处理、类和对象、访问修饰符等相关知识点。这些内容对于理解和掌握Java语言的基本概念和应用至关重要。
测试题涵盖了 Java 基础知识点,包括 Java 源程序编译、变量、数据类型、运算符、控制语句、方法、数组、类和对象等。 选择题部分包括 10 道题,涵盖了 Java 基础知识点,例如 Java 源程序编译后的文件扩展名、合法...
通过对测试题的解析和解释,帮助初学者对 JAVA 基础知识进行巩固和提高。 一、变量 *JAVA 中的变量可以是基本数据类型(primitive types)或引用类型(reference types) *基本数据类型包括整数(int)、浮点数...
在本测试题中,我们将探讨一系列与Java面向对象相关的知识点,这些知识点是初学者到中级开发者都应掌握的基础。 一、类与对象 1. 类是面向对象编程的基本单位,它代表现实世界中的一个实体或概念。类定义了对象的...
这些面试题通常用于测试开发者对Java基础知识的掌握程度。理解JDK与JRE的区别可以帮助开发者理解开发环境和运行环境的不同需求,而`==`和`equals`的使用则涉及到对Java内存模型的理解,这是编写正确、健壮的Java代码...
**解析**:在这个例子中,虽然 `num` 是私有的,但在 Java 中,对象作为参数传递时实际上传递的是对象的引用。因此,当 `update` 方法被调用时,它可以通过传递进来的引用修改 `Question` 对象的 `num` 属性,所以...
【北大青鸟S1 JAVA 选择题50题内部测试】是北大青鸟教育机构为学员准备的一套Java编程语言的精选选择题集,旨在帮助学员巩固和检验S1阶段的学习成果。这套试题涵盖了一小时的限时测试,旨在锻炼学员在实际考试环境中...
"Java培训测试题"是一个针对平安科技深圳有限公司员工入职培训的资源集合,旨在帮助员工掌握和巩固Java编程的基本概念和技术。这个资源包可能包含了一系列的练习题、复习材料以及额外的副本,以确保学习者全面理解和...
企业java工程师测试题 1. 面向对象的特征有哪些方面? 答案:最基本特征:封装,继承,多态。 其他特征:抽象关联,聚合,组合,内聚,耦合 2. String是最基本的数据类型吗? String 和StringBuffer的区别? 答案:...
Java测试题 本资源主要测试了Java语言的基础知识和编程能力,涵盖了Java的基本概念、面向对象编程、异常处理、线程编程、Java应用程序和Applet程序的开发等方面。 一、填空题 1. Java源文件的扩展名为.java,而...
Java 语言选择题解析 ...以上是对 Java 语言选择题的解析,涵盖了标识符规则、源文件命名、数据类型、面向对象、方法调用、继承、并发特性、流的类型以及方法重载等知识点。这些题目有助于巩固 Java 编程的基础知识。
在“JAVA应用题实验题”中,我们很可能会遇到一系列旨在加深对Java语言理解的实践题目。这些实验题通常涵盖了Java的基础语法、面向对象编程概念、数据结构与算法、异常处理、IO流、多线程、网络编程等多个方面。 1....
3. **配置Java环境**:在计算机上配置Java环境,主要是设置PATH环境变量,使其指向JDK安装目录的bin文件夹,这样在命令行中就可以直接使用javac(编译器)和java(解释器)等工具。 4. **合法标识符**:标识符用于...
Java 期末考试题库,包含基础题单选题 18 道,涵盖 Java 语言基础知识点,包括变量、数据类型、运算符、控制流程、数组、继承关系、方法和类的定义等。 一、单选题: 1. 下列语句序列执行后,k 的值是(B)。这是...
以下是对给定的Java基础测试题及其答案的详细解释: 1. **习题训练1** - 关于Java继承的描述,选项C错误。子类只能继承父类的非私有属性(public和protected),而不能继承私有属性。 2. **习题训练2** - 当`try`...