加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 字符串作为引用类型

发布时间:2020-12-15 08:28:19 所属栏目:Java 来源:网络整理
导读:参见英文答案 Java String variable setting – reference or value?????????????????????????????????????9个 我是学习Java的新手,但我刚刚开始理解值类型与引用类型.据我了解,String是一种引用类型.然而,与其他引用类型不同,我可以打印一个字符串,而不会打
参见英文答案 > Java String variable setting – reference or value?????????????????????????????????????9个
我是学习Java的新手,但我刚刚开始理解值类型与引用类型.据我了解,String是一种引用类型.然而,与其他引用类型不同,我可以打印一个字符串,而不会打印一些奇怪的字母和数字组合.这是为什么?此外,说我有代码

String s1 = "x";
String s2 = s1;
s1 = "xyz";
System.out.println(s2);

它会打印“x”,而不是“xyz”,即使我更改了s2所指的对象.当我改变一个数组时,这不会发生.为什么Strings特别?

解决方法

Unlike other reference types,however,I can print a String without it printing some weird combination of letters and numbers. Why is that?

因为String和许多其他类型一样,会覆盖Object.toString(),并返回另一个字符串,而不是默认实现返回的字符串(当然,它返回自身).

This doesn’t happen when I change,say,an Array.

你在混淆“为变量赋值”,“改变对象的状态”.如果你使用数组执行与此相同的操作,则会产生相同的行为:

char[] s1 = new char[] {'x'};
char[] s2 = s1;
s1 = new char[] {'x','y','z'};
System.out.println(Arrays.toString(s2));

为s1分配不同的数组时,不会更改变量s2指向的数组.

当然,如果s1和s2指向同一个数组,并且你修改了那个数组,那么它们都会指向同一个修改过的数组:

char[] s1 = new char[] {'x'};
char[] s2 = s1;
s1[0] = 'y';
System.out.println(Arrays.toString(s2));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读