java - 字符串内存模型

标签 java

我读到的有关字符串的内容是,当在 Java 中创建字符串对象时,它是不可变的。例如:

String s=new String();
s="abc";
s="xyz";

String s 是否不再指向 "abc"

还有一件事:s 的大小是多少; 就内存模型而言,String 对象是否类似于 C 中的 char* 指针?

最佳答案

不,Java String 不像 C 中的 char*。如果您正在寻找 java 中的模拟 char[] 是这样的。

String是一个包装了char数组并提供了很多功能的类。而且它是不可变的,即你不能改变它的内容。您只能创建另一个字符串。此外,String 是最终的,因此您不能将其子类化。

String 是特殊类。只有字符串支持运算符 (+)。所有其他类根本不支持运算符,甚至是原始包装器(Integer、Double 等)。代码“foobar”中字符串常量的存在会调用 java.lang.String 构造函数。

关于java - 字符串内存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736180/

相关文章:

java - Netty 比 Tomcat 慢

java - 应用程序引擎。 HTTP错误: 503 on Gradle setup

java - 如何强制或预测jstatd的第二个开放端口?

java - JMeter 中的默认变量和选择列表

java - 在 Android 上获取可用的蓝牙设备列表

java - Try-catch 在执行 SQL 查询时忽略变量的赋值

Java lambda - for 循环计数器实际上不是最终的

java - GIF 作为 JFrame 的背景

java - Android:在不启动新 Activity 的情况下添加后退按钮

java - 如果没有 else 三元运算符