date=null
import java.io.*;import java.util.*;
public class Last {
public static void main(String[] args) {
// TODO Auto-generated method stub
Last last=new Last();
Date date=new Date();
date.setDate(20);
System.out.println("1---"+date.getDate());
last.test2(date);//-----
System.out.println("2---"+date.getDate());
last.test0(date);
}
public void test2(Date date)
{
date.setDate(25);
System.out.println("3---"+date.getDate());
date=null;//这个赋值后,......求解释
//System.gc();
//System.out.println("3333---"+date.getDate());
}
public void test0(Date date)
{
System.out.println("4---"+date.getDate());
}
}
程序的输出 为什么? date=null;//这个赋值后,......求解释
--------------------编程问答-------------------- http://topic.csdn.net/u/20120329/23/5082a6f4-41a4-4676-9b54-161bd8f375bb.html
楼主参考别人怎么理解的。
--------------------编程问答-------------------- --------------------编程问答--------------------
import java.io.*;--------------------编程问答-------------------- date=null;//这个赋值后,......求解释
import java.util.*;
public class Last {
public static void main(String[] args) {
// TODO Auto-generated method stub
Last last=new Last();
Date date=new Date();
date.setDate(20);
System.out.println("1---"+date.getDate());
last.test2(date);//-----
System.out.println("2---"+date.getDate());
last.test0(date);
}
public void test2(Date date)
{
date.setDate(25);
System.out.println("3---"+date.getDate());
date=null;//这个赋值后,......求解释
//data = null ,只是参数的引用为 null ,让参数不知想任何对象,但是 传进来的参数 的date 在堆中还是存在,没有改变
//如果你在这里面修改date的属性 ,那么是会修改 date的;
//System.gc();
//System.out.println("3333---"+date.getDate());
}
public void test0(Date date)
{
System.out.println("4---"+date.getDate());
}
}
//用的是jdk1.6
//编译和输出结果如下:
//F:\javaTest>javac Last.java
//注意:Last.java 使用或覆盖了已过时的 API。
//注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
//
//F:\javaTest>javac -Xlint:deprecation Last.java
//Last.java:9: 警告:[deprecation] java.util.Date 中的 setDate(int) 已过时
//date.setDate(20);
// ^
//Last.java:10: 警告:[deprecation] java.util.Date 中的 getDate() 已过时
//System.out.println("1---"+date.getDate());
// ^
//Last.java:13: 警告:[deprecation] java.util.Date 中的 getDate() 已过时
//System.out.println("2---"+date.getDate());
// ^
//Last.java:18: 警告:[deprecation] java.util.Date 中的 setDate(int) 已过时
//date.setDate(25);
// ^
//Last.java:19: 警告:[deprecation] java.util.Date 中的 getDate() 已过时
//System.out.println("3---"+date.getDate());
// ^
//Last.java:26: 警告:[deprecation] java.util.Date 中的 getDate() 已过时
//System.out.println("4---"+date.getDate());
^
// 6 警告
//
// F:\javaTest>java Last
// 1---20
// 3---25
// 2---25
// 4---25
//
// F:\javaTest>
//
你是要问为什么赋值为null么?是为了提醒JVM垃圾回收,当然具体它什么时候回收,能不能回收都不确定。 --------------------编程问答-------------------- 传入的是地址的引用,在test2中setNull了以后,就把date指向了null所以,后面在调用sysout的时候就打出null
补充:Java , Java SE