String a = "abc"; //1个
// "abc"在字符串常量池中
String a = "abc";
String b = "abc"; //1个
// 两个"abc"都在字符串常量池中
String a = "a"+“b”+"c"; //1个
//在编译器的执行过程中,有以下过程
//a b c ab ac abc 几种情况,但是编译完成时就会合并成abc
String a = new String("abc"); //2个
//"abc"在字符串常量池中 1个
//在运行new时在堆中开辟了新空间 1个
//a引用指向堆中的对象,不算
String a = new String("abc");
String a = new String("abc"); //3个
//"abc"在字符串常量池中 1个
//每次new都会在堆中创建一个对象 2个
本文深入探讨Java中字符串常量池的运作机制,解析不同字符串声明方式对内存的影响,包括直接赋值、使用加号连接及new关键字创建时,字符串在常量池和堆内存中的分布情况。
3870

被折叠的 条评论
为什么被折叠?



