java基础知识23 java的字符串为null拼接空串(“”)内存布局
目录
一 Stirng str = null的含义以及内存存储
1.1 String str =null的含义
1.2 内存结构图
1.3 代码案例
二 Stirng str = “你”+“好”在编译期的内存结构
2.1 String s=“你”+“好” 的含义
2.2 String s=“你”+“好” 的内存
三 .Stirng str = “你”+“好”的运行期内存存储
3.1 运行期的含义
3.2 二者之间的关系与区别
四 Stirng s =null;string b =s+“”;
4.1 String b = null+“”;
一 Stirng str = null的含义以及内存存储
1.1 String str =null的含义
对于 string str = null;
1.null表示没有对象或空引用;只分配栈帧中的引用变量,不创建任何对象,在堆和常量池中都没有创建对象关系。
2.它是一个特殊的值,表示变量不指向任何内存地址
3.在java中,null不是对象,不占用对象内存
4.null表示"无对象",它本身不是对象,只是表示引用变量当前没有指向任何有效的内存地址。
1.2 内存结构图
栈内存:变量s在栈中分配空间;存储的值是 null(特殊标记值)
堆内存:没有创建任何新的 String 对象;没有分配任何堆内存
字符串常量池:没有添加任何新的字符串字面量,常量池保持不变
1.3 代码案例
1.代码
// 情况1:null 赋值 String s1 = null; // 栈中有变量,不指向任何对象 // 情况2:空字符串 String s2 = ""; // 栈中有变量,指向常量池中的"" |