Java字符串是Java中特殊的
Java中字符串的不可变性
>
不变性:现在,根据不变性,String类已经被设计成可以在其他地方/变量中重用公共池中的值。如果字符串
创建为
字符串a=“hello world!”;
但是,如果我创建类似
这些上面已经有帖子了吗?如果是,有人可以分享链接吗?
new String()
是生成字符串
...字符串
的表达式,无论它是如何生成的,它都是不可变的。
(询问new String()
是否可变是荒谬的。它是程序代码,不是值。但我认为这不是您真正的意思。)
如果我创建一个字符串对象为string c=“”;
是在池中创建的空条目吗?
(有点迂腐,“”
的池条目是在代码执行之前很久创建的。实际上,它是在加载代码时创建的。..甚至可能更早。)
所以,我想知道新的堆对象是否也是不可变的,······
是的。是的。但不可变性是String对象的一个基本属性。所有字符串
对象。
JavaString
被设计为不可变类的主要原因是简单。如果核心string类提供了一个不可变的接口,它可以更容易地编写正确的程序,并阅读/推理其他人的代码。
第二个重要的原因是,字符串
的不可变性对Java安全模型有根本性的影响。但我不认为这是最初的语言设计中的驱动程序...在Java1.0和更早的版本中。
根据答案,我认为对同一变量的其他引用是原因之一。如果我对此的理解是正确的,请让我知道。
问题内容: 我学习Java String已有一段时间了。以下问题基于以下帖子 Java String是Java中String的特殊 不变性 不可变性:现在,通过不可变性,已经设计了String类,以便可以在其他位置/变量中重用 公共池中 的值。如果将的创建为 但是,如果我创建像 为什么这也是不变的?(或者是?)。由于它具有专用的堆内存,因此我应该能够在不影响任何其他变量的情况下对其进行修改。因此,
如果我的API提供了一个流,客户端是否有办法修改基础集合? 例如: 客户端是否可以调用并以某种方式修改的内容?
问题内容: 我知道这可能很愚蠢,但是很多地方都声称Java中的Integer类是不可变的,但是下面的代码: 毫无困难地执行(给出预期的结果)6。因此有效地改变了a的值。这不是说Integer是可变的吗?第二个问题和一些小问题:“不变的类不需要复制构造函数”。有人在乎解释原因吗? 问题答案: 不可变并不意味着永远不能等于另一个值。例如,也是不可变的,但是我仍然可以这样做: 并没有改变,而是变成了一个
我有一个Java/Kotlin互操作问题。一个Kotlin不可变列表被编译成一个普通的java.util.ArrayList,它是可变的! 静态编程语言(库): Java(消费者): 如何使我的 Kotlin 类从 Java 的角度来看也是完全不可变的?
我不断得到关于浮点数(即、或)是否有一个且只有一个精度值的混合答案,或者具有可以变化的精度值。 一个名为浮点与双精度的主题似乎暗示浮点精度是绝对精度。 然而,另一个被称为浮点和双精度之间的差异的主题说, 一般来说,双精度有15到16位十进制数字 另一位消息人士说, 浮点型变量的精度通常约为7位有效数字 double类型的变量通常具有约16位有效数字的精度 如果我使用的是敏感代码,当我的值不精确时,
本文向大家介绍不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?相关面试题,主要包含被问及不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?时的应答技巧和注意事项,需要的朋友参考一下 String是不可变的在这段代码中,s原先指向一个String对象,内容是 "abc",然后我们将s指向"123",那么s所指向的那个对象是否发生了