张晓华的博客

        2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 171, comments - 89, trackbacks - 5, articles - 1

关于对象的传递

Posted on Monday, July 10, 2006 9:18 AM

package base;

/**
 * 关于对象的传递
 * JAVA总是使用传值调用
 * */
public class ChangeParameter {
 private int i = 0;
 
 public ChangeParameter() {}
 
 /**
  * 不能修改基本类型
  * */
 public void changeBaseType(int j) {
  j = 10;
 }
 
 /**
  * 不能让对象参数指向新的对象
  * */
 public void changeObject(Test test) {
  test = new Test(100);
 }
 
 /**
  * 可以修改对象参数的状态
  * */
 public void changeValue(Test test) {
  test.setChange(100);
 }
 
 /**
  * 不能修改包装器类的值
  * */
 public void changeWrapType(Integer i) {
  i = new Integer(99);
  System.out.println("改变Integer = " + i.toString());
 }
 
 public static void main(String[] args) {
  ChangeParameter change = new ChangeParameter();
//  不能修改基本类型
  System.out.println("不能修改基本类型");
  int value = 0;
  change.changeBaseType(value);
  System.out.println(value);
  
  //不能让对象参数指向新的对象
  System.out.println("不能让对象参数指向新的对象");
  Test test = new Test(10);
  System.out.println(test);
  change.changeObject(test);
  System.out.println(test);
  
//  可以修改对象参数状态
  System.out.println("可以修改对象参数状态");
  System.out.println(test);
  change.changeValue(test);
  System.out.println(test);
  
  //不能修改包装器类的值
  System.out.println("不能修改包装器类的值");
  Integer it = new Integer(10);
  System.out.println("传递前 Integer = " + it.toString());
  change.changeWrapType(it);
  System.out.println("传递后 Integer = " + it.toString());
  
 }
}

final class Test {
 private int i = 0;
 
 public Test(int i) {
  this.i = i;
 }
 
 public void setChange(int i) {
  this.i = i;
 }
 
 public String toString() {
  return getClass().getName() + " " + i;
 }
}

Feedback

# re: 关于对象的传递

8/31/2006 4:17 AM by XL
在不更新就老掉牙啦

Post Comment

Title  
Name  
Url
Comment   
Protected by Clearscreen.SharpHIPEnter the code you see: