java 的pass by value(传值)

本文通过两个实例详细解析了Java中值传递的特点:当传递基本类型时,改变的是副本;而传递对象引用时,则能直接修改原始对象的状态。文章强调了虽然对象引用按值传递,但可以通过方法修改对象本身。

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

这里写一下java的值传递

参数是基本类型的时候:

class param {

     public static void main( String[] args ){
           int x = -1 ;
           change( x );
           System.out.println("x = " + x );
     }

     public static void change( int x){
          x = 10 ;
          System.out.println("change(), x = " + x );
     }
}

 以上代码的结果大家应很清楚吧。

 但是参数是对象的时候,可能就有点人迷糊了。

public class handleTitle {
	public static void main(String[] args){
		handleTitle.test t = new handleTitle().new test(1,1);
		System.out.println(t.getX());
		System.out.println(t.getY());
		put(t);
		System.out.println(t.getX());
		System.out.println(t.getY());
	}
	public static void put( test t){
		t.setX(5);
		t.setY(6);
	}
	class test {
		int x ;
		int y ;
		public test( int x , int y){
			this.x = x;
			this.y = y ;
		}
		public test(){
			
		}
		void setX(int xx){
			x = xx;
		}
		int getX(){
			return x;
		}
		void setY(int yy){
			y = yy;
		}
		int getY(){
			return y;
		}
	}
}

 测试结果是:

 1
 1
 5
 6

 

从本质上来说,object reference是按值传递的,因此可以修改参数对象的内部状态,但是对参数对象重新赋值,没有意义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值