java - 从java应用程序外部传递过来的String会保存在String池中吗?

标签 java string string-pool

我读了很多答案,但没有一个真正准确地回答我的问题。

如果我有一个 java 服务在某个端口上运行,客户端连接到它并调用如下方法:

String data = getServiceData("clientKey");

现在我的问题是,这个key(clientKey)会被存储在服务端的String literal pool中吗?通常要存储在常量池中的文字是在编译时计算出来的,但是从 JVM 外部传递的字符串或者可能在读取文件时会发生什么情况?

最佳答案

String 对象在您的客户端被序列化和反序列化并保存在堆内存中。如果你想让它存储在你的字符串池内存中,你应该使用 intern()方法。

    String value;
    String data = (value =getServiceData("clientKey"))==null?null:value.intern();

关于java - 从java应用程序外部传递过来的String会保存在String池中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185934/

相关文章:

java - 跨所有 Activity 的 API 类

Java switch/case 与 if 问题

php mb_convert_case() 保留大写的单词

java - 这个 Java 代码片段是如何工作的? (字符串池和反射)

java - Tapestry 5 - 将页面类名称与 URL 分离

java - 有没有一种机制可以分发带有自己的 JRE 的应用程序?

c - 将字符串传递给函数并返回结构

java - 如何在java中使用return和字符串

java - 直接添加和引用添加的字符串之间的区别

java - 正如 String.intern() 方法的 Javadoc 中提到的那样,String Pool 最初真的是空的吗?