java中方法中传参时基本类型和引用类型的理解

package rhapp_service;

public class TestZhouy {
	
	public static void main(String[] args) {
		
		/**基本类型:
		 * 原值不会改变。
		 * 基本类型在方法中的传递,是值的传递。
		 * 即将本身的值赋值给方法中的形参中,方法中对形参操作,不影响之前的值。
		 */
		int a = 1;
		test1(a);
		System.out.println(a);
		
		/**被final修饰的引用类型:
		 * string类型也是引用类型,但为什么原值还是不变呢???
		 * 这就要涉及到string类型的特殊性了,string类型默认是被final修饰的。
		 * b存放堆中1字符串的地址,将内存地址赋值给x后,b中存放的仍然是1的内存地址。
		 * 后续操作x对应的对象已不是b对应的对象了,而是b对应对象的复制品,因为字符串是final型的。
		 * final的理解:
		 * String x="a";x="b"; //两个字符串a和b都存在,只不过后来x指向了b字符串。
		 */
		String b = "1";
		test2(b);
		System.out.println(b);
		
		/**引用类型:
		 * 原值会改变。
		 * 引用类型在方法中的传递,也是值的传递,只不过该值为对象的地址。
		 * 当将该对象地址赋值给方法中的形参,方法中操作的还是该地址对应的原对象。
		 */
		StringBuffer c = new StringBuffer("1");
		test3(c);
		System.out.println(c);
		
		/**
		 * output:
		 * 	1
			1
			11
		 */
	}
	
	static void test1(int x){
		x = x + x;
	}
	
	static void test2(String x){
		x = x + x;
	}
	
	static void test3(StringBuffer x){
		x.append(x);
	}
}

总结:

1.方法传参都是值的传递;

2.引用类型传递的是对象地址;

3.被final修饰的变量不能再次赋值,只能对其对象属性修改;


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Firechou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值