`
caiceclb
  • 浏览: 239445 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

看了 [java的面使题] java的面使题 之后,对对象引用的测试

阅读更多
原帖地址: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,怎么会异常?!
    }


分享到:
评论
2 楼 caiceclb 2008-11-28  
n5281407 写道

原帖不会有异常,a = null;

额,我就是这个意思,你没看原帖吧,原帖描述说是异常,实际应该是null
1 楼 n5281407 2008-11-28  
原帖不会有异常,a = null;

相关推荐

    企业java工程师测试题

    企业java工程师测试题 1. 面向对象的特征有哪些方面? 答案:最基本特征:封装,继承,多态。 其他特征:抽象关联,聚合,组合,内聚,耦合 2. String是最基本的数据类型吗? String 和StringBuffer的区别? 答案:...

    java面向对象程序设计习题-(11).doc

    第四章 类和对象 [习题] 1.类及类成员的访问控制符有哪些? 2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调 用? 3.关键字static可以修饰哪些类的组成部分? 4.静态属性有什么特点?...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本...这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java 面试题 总结

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...

    Java虚拟机中冷对象的研究_骆凡.caj

    相比较确定冷对象来对内存对象进行评估和识别,建立的访 问模型更加适合长时间运行的有着大量堆对象需求的应用程序。 本文描述了一个基于堆栈框架 , 用于在运行时检测这些 “ 冷 ” 对象 , 以便在堆的指定 区域...

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA面向对象详细资料

    Java面向对象 1 1 学习方法与要求 1 2 面向对象语言与面向过程语言的区别 7 3 面向对象?什么对象? 8 4 什么是类? 9 5 如何创建一个类Class? 10 6 如何使用类创建对象 10 7 引用与实例 11 8 实例属性与实例方法 ...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    Thinking in Java 中文第四版+习题答案

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 其他J/Direct...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    head first java

    非常不错的 java学习书籍 目录 序 1 进入Java的世界 Java的工作方式 Java的程序结构 剖析类 main()方法 循环 条件分支 设计程序 术语制造机 谈话录 习题 2 拜访对象村 椅子大战 继承 覆盖 什么是类? 创建你的...

    java初学者必看

    尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,不妨过来讨论一下哦! 第1章 Java概述 1.1 Java的发展史 1.1.1 Java起源 1.1.2 Java发展 1.2 Java是什么 1.2.1 Java语言 1.2.2 Java平台 1.2.3 ...

    Java开发技术大全(500个源代码).

    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][Final]测试例子

    Java编程思想第四版140页是这么描述的,“对应基本类型,final使数值恒定不变,对应对象引用,final使引用恒定不变。 * 一旦引用被初始化指向一个对象,就无法再把他改为指向另一个对象。然而对象其自身却是可以被...

    Java面向对象基础知识点复习

     封装:封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。  继承:继承实际上是存在与面向对象程序中的两个类...

    javajava概要设计方案.doc

    1.2背景 随着信息检索技术的高速发展,做为信息检索代表的搜索引擎被广泛引用,如google, 百度等,在中国Internet高速发展过程中,越来越受关注,特别是google,百度在美国 上市后,搜索引擎备受关注。 a.系统的...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存...

Global site tag (gtag.js) - Google Analytics