public abstract class wren
{
public static void main(String[] args)
{
String st1, st2;
st1 = "2";
st2 = st1;
st1 = null; //执行这行之后,为什么st2不是null呢??
System.out.print(st1);
System.out.print(st2);
}
}结果为:null2
st2=st1的时候,是不是st2和st1都指向一个内存空间呢,那为什么st1=null,的时候,st2不是null呢。
{
public static void main(String[] args)
{
String st1, st2;
st1 = "2";
st2 = st1;
st1 = null; //执行这行之后,为什么st2不是null呢??
System.out.print(st1);
System.out.print(st2);
}
}结果为:null2
st2=st1的时候,是不是st2和st1都指向一个内存空间呢,那为什么st1=null,的时候,st2不是null呢。
比如:人--存在堆中
楼主是个引用(就是个代号),因为你也是人~~,是一个特定的人
人 楼主=new 人();
右边在堆中开辟空间,这个对象包含人的属性,左边声明引用
以后就可以直接用这个代号
楼主.方法()来调用"人"中的方法
public abstract class wren {
public static void main(String[] args) {
String st1, st2;
st1 = "2";
st2 = st1; //st2指向st1的内存地址,得到值str="2"
st1 = null; //执行这行之后,st1被重新赋值
System.out.print(st1);
System.out.print(st2);
}
}
st1 = "2"; //st1指向"2"
st2 是一个引用
st2 = st1;//这句执行完 st2也指向"2" 也就是st1和st2同时指向"2"
st1 = null;//执行完 st1 和 "2" 断开,st1不指向任何实例
所以 st1为空 st2指向"2"