如何解决字符串不能改变但是int,char可以改变
正如bzabhi所说,字符串在Java中是不可变的。这意味着字符串对象将永远不会改变。这并不意味着您不能更改字符串变量,只是不能更改字符串的基础内存表示形式。例如:
String str = "Hello";
str += " World!";
执行完这些行后,str将指向内存中的新字符串。原始的“ Hello”字符串仍然存在于内存中,但是很可能不会存在很长时间。假设没有可减轻的情况,则原始字符串不会指向任何内容,因此将被垃圾回收。
我想最好的表达方式是说,当示例的第2行执行时,将在原始字符串和要添加到其中的字符串的连接中创建一个新的内存字符串。然后,将仅作为对内存位置的引用的str变量更改为指向刚创建的新变量。
我并不是特别了解这一点,但是据我了解,这就是所有“非原始”价值的情况。从Object导出的任何东西都遵循这些规则。原始值(例如int,bool,char,float和double)允许更改内存中的实际值。因此,从此:
int num = 5;
num += 2;
内存中的实际值会更改。而不是创建新对象并更改引用,此代码示例将仅更改num变量在内存中的值。
至于为什么如此,这只是Java制造商的设计决定。我敢肯定有人会评论为什么这样做,但这不是我所知道的。
解决方法
我读过在Java中不能更改String类型的对象。但是int和char变量可以。为什么?你可以给我一个例子吗?
谢谢。(我是较新的-_-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。