String中赋值操作和比较操作

来源:互联网 发布:java高级工程师简历 编辑:程序博客网 时间:2024/05/23 18:59
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));//falseSystem.out.println("str1 == str3 " + (str1 == str3));//falseSystem.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));//trueSystem.out.println("str1 == str3 " + str1.equals(str3));//trueSystem.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()的方式则意味着要开辟两个内存对象。在开发中最好使用直接赋值的方式完成。
0 0