java - 带有新关键字的字符串和java中的直接赋值

标签 java string

<分区>

String s="hi";
String s1=new String("hi");

从内存的角度来看,s 和 s1 存储在哪里?无论是在堆内存还是栈中。

s指向“hi”,s1指向hi所在的内存位置?

请帮忙?

最佳答案

考虑以下

 String s = "hi";
 String s1 = new String("hi");

变量 s 将引用字符串常量池中引用的字符串文字 hi 并且如果有更多变量,如 s2 = "hi",那么 ss2 将引用同一个对象。

String s1 = new String("hi"); 

这将在运行时创建一个新的字符串。

在第一种情况下,所有的 strnig 文字都是在 JVM 中加载类时创建的 在秒的情况下,字符串对象在 new String() 被执行时被创建。 您可以在以下链接中找到有关字符串常量池的很好的教程

http://www.thejavageek.com/2013/06/19/the-string-constant-pool/

关于java - 带有新关键字的字符串和java中的直接赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400099/

相关文章:

java - 未能找到 getChildren(),遵循 JavaFX WebKit 的 Oracle 官方指南

java - Spring-MVC、 hibernate : Creating DTO objects from Domain objects

java - 如何从 scala (casbah) 访问 mongoDB 中的二进制数据

c - 用空格迭代字符串

c# - 如何比较 "look alike"的 Unicode 字符?

javascript - 在第 X 个位置间隔处使用正则表达式替换字符串 (javascript)

java - 如何在 CRONET 中将 json 对象作为 post 请求发送?

java - 创建了错误的 SOAP 请求

sql - 在SQL中将字符串列表转换为Int列表

javascript - Node JS,如何在 JSON 字符串中正确存储 Base64 字符串?