java string变量_java String 变量

学习java时,发现 String变量 与其他引用类型的变量有点不太一样,

String a = "aaa"; String b="aaa";  经过测速发现a==b   为true  这说明a b指向同一个字符串对像  ,

String a ="aaa";  String b = new String("aaa");  a==b 为false  ,说明a ,b 指向不同字符串对象,

为什么会这样了  ?

经过查找资料发现  java虚拟机内存中存在一个字符串缓冲区 当把一串字符串赋值给一个字符串变量时,

若字符串存在缓冲区,则将缓冲区字符串的引用赋值给字符串变量,否则就分配新的内存地址存放字符串,并将引用赋值给字符串变量。

若使用new String创建字符串对象,会直接从java堆内存中分配空间存储字符串,并将引用赋值给字符串变量。

字符串对象是不可变的对象,当字符串发生变化时会创建新的字符串对象

当字符串变量改变时,会重新分配内存存放字符串,即字符串变量重新指向新的字符串

覆盖+ 运算符

"aaa"+"bbb";

使用+运算符连接字符串时,等同于String类的append()方法,   新建了一个字符串对象包含了“aaabbb”

当字符串经常改变时,应当使用StringBuffer类 的append方法来增加字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值