「java字符串存储」java string 存储

博主:adminadmin 2022-12-01 13:22:07 374

今天给各位分享java字符串存储的知识,其中也会对java string 存储进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中String类型存储位置

一、new String都是在堆上创建字符串对象。

当调用 intern() 方法时,

编译器会将字符串添加到常量池中(stringTable维护),

并返回指向该常量的引用。

二、通过字面量赋值创建字符串(如:String str=”twm”)时,

会先在常量池中查找是否存在相同的字符串,若存在,

则将栈中的引用直接指向该字符串;若不存在,则在常量池中生成一个字符串,

再将栈中的引用指向该字符串。

三、常量字符串的“+”操作,

编译阶段直接会合成为一个字符串。

如string str=”JA”+”VA”,

在编译阶段会直接合并成语句String str=”JAVA”,

于是会去常量池中查找是否存在”JAVA”,从而进行创建或引用。

四、对于final字段,编译期直接进行了常量替换(而对于非final字段则是在运行期进行赋值处理的)。

final String str1=”ja”;

final String str2=”va”;

String str3=str1+str2;

在编译时,直接替换成了String str3=”ja”+”va”,根据第三条规则,

再次替换成String str3=”JAVA”

五、常量字符串和变量拼接时(如:String str3=baseStr + “01”;)

会调用stringBuilder.append()在堆上创建新的对象。

六、JDK 1.7后,intern方法还是会先去查询常量池中是否有已经存在,

如果存在,则返回常量池中的引用,这一点与之前没有区别,

区别在于,如果在常量池找不到对应的字符串,则不会再将字符串拷贝到常量池,

而只是在常量池中生成一个对原字符串的引用。简单的说,就是往常量池放的东西变了

原来在常量池中找不到时,复制一个副本放到常量池,1.7后则是将在堆上的地址引用复制到常量池。

举例说明:

String str2 = new String(“str”)+new String(“01”);

str2.intern();

String str1 = “str01”;

System.out.println(str2==str1);

在JDK 1.7下,当执行str2.intern();时,

因为常量池中没有“str01”这个字符串,所以会在常量池中生成一个对堆中的“str01”的引用

(注意这里是引用 ,就是这个区别于JDK 1.6的地方。在JDK1.6下是生成原字符串的拷贝),

而在进行String str1 = “str01”;字面量赋值的时候,常量池中已经存在一个引用,

所以直接返回了该引用,因此str1和str2都指向堆中的同一个字符串,返回true。

String str2 = new String(“str”)+new String(“01”);

String str1 = “str01”;

str2.intern();

System.out.println(str2==str1);

将中间两行调换位置以后,因为在进行字面量赋值(String str1 = “str01″)的时候,

常量池中不存在,所以str1指向的常量池中的位置,而str2指向的是堆中的对象,

再进行intern方法时,对str1和str2已经没有影响了,所以返回false。

Java中如何实现用户输入多个字符串并存储在字符串数组中?

int n = Integer.valueOf(input.nextLine().replaceAll("[^\\d]", ""));

改成这样即可;因为你的输入函数,你之前调用的它int类型方法;

改成这样,就类似你一直用的都是字符串,区别你第一次的字符串被Integer对象转成数字了;

java中,字符串,如何存储?在内存中的哪个区域?

字符串在java中是不可变序列,每一个双引号的字符串序列都是常量,存在常量池中。但String类型的对象,属于对象范畴,按对象的特性存储。

java字符串和字符串构建器内部用什么存储字符?

用StringBuffer 或者StringBuilder

String 创建一个对象 然后你对String 对象进行字符串的拼接或者其他操作会产生新的对象 也就是说两个的地址会不同 而StringBuffer和StringBuilder对字符串的改变用呢append方法,不会改变字符串的地址

关于java字符串存储和java string 存储的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。