String中赋值操作和比较操作

本文探讨了Java中String对象的两种实例化方式:直接赋值和使用new关键字。通过实例展示了使用(==)和equals()方法进行比较的区别,强调了(==)比较地址而equals()比较内容。建议在开发中优先采用直接赋值方式以减少内存开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实例化String对象
String name01 = "Tom";//直接赋值
String name02 = new String("Tom");//通过new关键字赋值
2.String对象的两种比较方式
(1)通过(==)比较
String str1 = "hello";
String str2 = new String("hello");
String str3 = str2;
System.out.println("str1 == str2 " + (str1 == str2));//false
System.out.println("str1 == str3 " + (str1 == str3));//false
System.out.println("str2 == str3 " + (str2 == str3));//true
此时,我们进行如图的内存分析:

使用判断相等(==),是判断地址空间是否相等,判断的是地址值。
如果想要判断其内容是否相等,则就必须使用String类中提供的equals()方法。
String str1 = "hello";
String str2 = new String("hello");
String str3 = str2;
System.out.println("str1 == str2 " + str1.equals(str2));//true
System.out.println("str1 == str3 " + str1.equals(str3));//true
System.out.println("str2 == str3 " + str2.equals(str3));//true
结论:String两种比较方式
(1)一种是使用(==)完成,比较的是地址值。
(2)另一种是使用equals()方法完成,比较的是具体的内容。
String类两种实例化方式的区别——————直接赋值
String str1 = "hello";
String str2 = "hello";
String str3 = "hello";
str1,str2和str3共用堆中的一块内存。如下图所示:

String类两种实例化方式的区别——————通过关键字new赋值
String str = new String("hello");
在堆内存开辟了两个空间。如图所示:

使用直接的方式只需要实例化对象即可,而使用new String()的方式则意味着要开辟两个内存对象。在开发中最好使用直接赋值的方式完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值