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特别? 解决方法
因为String和许多其他类型一样,会覆盖Object.toString(),并返回另一个字符串,而不是默认实现返回的字符串(当然,它返回自身).
你在混淆“为变量赋值”,“改变对象的状态”.如果你使用数组执行与此相同的操作,则会产生相同的行为: 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)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |