栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

字符串不能改变。但是int,char可以改变

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串不能改变。但是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制造商的设计决定。我敢肯定有人会评论为什么这样做,但这不是我所知道的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440404.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号