java string 类型传值_java 基本类型的包装类如Float类型在作为函数参数传递时为什么是传值调用类型?...

Stack Overflow中的相似问题的答案说的很清楚

希望能帮到题主

所有基本类型包装类有以下两个特点:

1. 所有实例都是只读的

2. 用基本类型进行赋值时,会自动新建实例。

翻译如下:(可以使用String类比是因为虽然String不是包装类,但是有包装类的特性,final修饰不可更改,自动装箱拆箱,可以帮助理解包装类)

String str = new String();

str 不是一个对象,是对象的引用,"Hello"和"Help!"是两个字符串对象,因此 str 指向一个字符串对象,你可以改变str指向哪个对象,但是不可以他指向的对象的内容

String s1 = "Hello";

String s2 = s1;

// s1 and s2 now point at the same string - "Hello"

现在s1和s2指向了相同的字符串 "Hello",但是"Hello"这个字符串对象本身是不可更改的所以我么无法修改它

如果我们这么做

s1 = "Help!";

System.out.println(s2); // still prints "Hello"

这样我们可以看到直接修改对象和改变引用的区别,s2仍然指向 "Hello" ,设置s1 = "Help!";的过程中实际上是,重新创建了一个字符串对象"Help!",然后让s1指向"Help!",我们只是改变了s1的指向,并没有修改"Hello"对象,"Hello"仍然是不可更改的。

妙!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值