论坛首页 入门技术论坛

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

浏览 1475 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-28  
原帖地址: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  
原帖不会有异常,a = null;
0 请登录后投票
   发表时间:2008-11-28  
n5281407 写道

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

额,我就是这个意思,你没看原帖吧,原帖描述说是异常,实际应该是null
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics