关于java变量和对象的作用域与操作符中的赋值

本文探讨了变量和对象在不同作用域内的行为差异。详细分析了局部变量随代码块结束而销毁,而对象虽然超出作用域但仍占用内存的情况。通过实例展示了对象赋值时,两个对象指向同一引用的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的作用域:作用域由花括号决定

{
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

由此可见:

当两个对象只赋值单个属性的值时,此时两个对象还是独立的,当进行对象赋值的,此时两个对象将指向用一个引用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值