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 = "";             // 栈中有变量,指向常量池中的""

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值