变量的作用域:作用域由花括号决定
{
int a = 1;
//此时只有 a
{
int b = 2;
//此时有 a 和 b
}
//此时只有 a ; b的生命周期已经出了代码块,结束了
}
对象的作用域:
{
Student student = new student();
} //此时对象student的作用域已经结束,但是不同于变量,对象的的生命周期未结束,还存活于作用域之外,仍然占据内存空间
操作符中的赋值:
public class StimulateDuck {
public static void main(String[] args) {
Student st = new Student();
Student st2 = new Student();
st.age=12;
st.name="zhangsan";
st2.age=50;
st2.name="lisi";
System.out.println("st.age:"+st.age+" ;st2.age:"+st2.age);
System.out.println("st.name:"+st.name+" ;st2.name:"+st2.name);
st=st2;
System.out.println("st.age:"+st.age+" ;st2.age:"+st2.age);
System.out.println("st.name:"+st.name+" ;st2.name:"+st2.name);
st2.age=15;
st2.name="wangwu";
System.out.println("st.age:"+st.age+" ;st2.age:"+st2.age);
System.out.println("st.name:"+st.name+" ;st2.name:"+st2.name);
}
}
输出:
st.age:12 ;st2.age:50
st.name:zhangsan ;st2.name:lisi
st.age:50 ;st2.age:50
st.name:lisi ;st2.name:lisi
st.age:15 ;st2.age:15
st.name:wangwu ;st2.name:wangwu
由此可见:
当两个对象只赋值单个属性的值时,此时两个对象还是独立的,当进行对象赋值的,此时两个对象将指向用一个引用