
【1】字符串拼接
public class Test02 {
public static void main(String[] args) {
String s1="a"+"b"+"c";
String s2="ab"+"c";
String s3="a"+"bc";
String s4="abc";
String s5="abc"+"";
}
}
上面的字符串会进行编译器优化,直接合并成为完整的字符串,反编译验证:
package com.pyk.teat;
public class Test02 {
public static void main(String[] args) {
String s1="abc";
String s2="abc";
String s3="abc";
String s4="abc";
String s5="abc";
}
}
然后在常量池中,常量池的特点是第一次如果没有这个字符串,就将其放进去,如果有这个字符串,就直接从常量池中取
【2】new关键字创建对象
String s6=new String("abc");
内存分析:
【3】有变量参与的字符串拼接
String a="abc";
String b=a+"def";
System.out.println(b);
a变量在编译的时候不知道a是"abc"字符串,所以不会进行编译期优化,不会直接合并为"abcdef"
反编译过程:为了更好分析字节码文件是如何进行解析的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)