对象、引用的关系

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.omg.SendingContext.RunTime;


public class Test {
   private Date date;
   private String x;
   public static String m;
  
  
 public String getX() {
 return x;
    }
 static{
  System.out.println("静态默认执行");
 }
 public static void getProperty()
 {
  System.out.println("得到属性值");
 }

public void setX(String x) {
 this.x = x;
}

 public Date getDate() {
 return (Date) date.clone();
}

   public void setDate(Date date) {
 this.date = date;
}

 /**
  * @param args
  * @throws IOException
  */
 public static void main(String[] args) throws IOException {
     Test t = new Test();
      t.setX("a");
     Test t2 = new Test();
     t2.setX("b");
     swap(t,t2);
     System.out.println(t.getX()+"    " +t2.getX());
     //如果传递的是引用的话
     Test tem = new Test();
      tem =t;
      t = t2;
      t2 =tem;
      System.out.println(t.getX()+"    " +t2.getX());
 } 
 public static void swap(Test x , Test y){  // x , y 为分别为上面对象 test@.. 和对象 test@.. 的一个引用,而上面2的t  和 t2 也分别是两个对象的引用,这样的话也就是说现在每个对象分别有两个引用  t 、x    t2、y
  x.setX("xx");
  Test tem = new Test();
  tem =x;
  x =y;
  y = tem;   //交换的只是他们引用的名称
  System.out.println(y.getX());  
 }

}

 

以上说明了 对象可以有多个引用每个对象的引用的名称变化,是不影响对象的情况的,但是对引用的操作即对对象的操作。

你可能感兴趣的:(java,.net)