Java中的String类型

创建一个字符串变量有两种方式:
String str1="123";
String str2=new String("123");
第一种方法JVM在执行双引号操作符的时候,会自动的去String对象池中搜索该字符串是否已经被创建,如果已经被创建则返回一个引用,如果没有就先创建再返回引用。
第二种方法,new语句会直接创建一个新的String对象,并把引用返回。

JVM在启动的时候会实例化9个对象池,分别用来存储8中基本数据类型的包装类对象和String对象,主要是为了效率问题。Java的字符串String对象有一个特性,就是不变性,它只能被创建不能被修改。

String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
str1.equals(str2)返回true
str1==str2返回true,因为当定义str2时,String对象池中已经有了“abc”,所以直接返回引用,即str1和str2是对同一个对象的引用
str1.equals(str3)返回ture
str1==str3返回false,因为new运算符会直接创建一个新的对象

equals方法比较的是对象的值是否相同,==用于比较两个对象是不是同一个对象或者两个基本数据类型变量值是否相等。

因为String对象的不变性,Java提供了StringBuffer和StringBuilder类来进行字符串的拼接等操作,但是StringBuffer不是线程安全的,StringBuilder是线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值