java String类字符串常量的理解

java为字符串常量在字符串缓冲池中分配内存:
  (1) 池中常量内存空间只读不写

   (2)池中字符串常量不重复,相同的字符串为同一内存空间

例如:

String s1="ab";   //在池中分配一块内存用于存放常量"ab"

 String s2="ab";   //由于池中存在"ab",引用变量a指向存在的"ab"内存空间首地址。所以s1和s2指向同一池中"ab"的内存空间

String s3="a";//在池中新分配一块内存用于存放常量"a"

String s4="a"+"b";//在池中新分配用于存放"b"的临时内存,合并将池中的"a"和"b"为"ab",因"ab"已存在,所以不再新分配内存,将已存在的"ab"内存地址赋值给引用变量s4.

String s5=s3+"b";  //引用变量和字符常量"b"连接运行,在堆区分配一块内存存放合并后的"ab",并将其首地址赋值给引用变量d

String e=new String("ab");  //在堆区分配一块内存存放"ab",并将其首地址赋值给引用变量e.

String 类型的引用变量直接判断“==”,比较的是引用变量其在栈内存的内容,即变量指向的字符串常量实例内存的首地址。
若要判断其指向的实例内容是否相等,需要使用equals方法完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值