黑马程序员技术交流社区

标题: String类对象的两种创建方式学习总结 [打印本页]

作者: bin2015    时间: 2015-5-29 16:21
标题: String类对象的两种创建方式学习总结
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");
        String str4 = new String("hello");
               
        System.out.println("str1==str2?"+(str1==str2));                   //true      
        System.out.println("str2==str3?"+(str2==str3));                   //false  
        System.out.println("str3==str4?"+(str3==str4));                   // false  
        System.out.println("str2.equals(str3)?"+(str2.equals(str3)));  // true
        System.out.println("str3.equals(str4)?"+(str3.equals(str4)));  //true
用“hello”这种方式创建字符串对象的时候,java虚拟机会先检查字符串常量池是否具备“hello”这个字符串对象,如果常量池中不具备,那么就创建这个字符串对象并返回内存地址。如果字符串常量池中已经存在那么直接返回字符串常量池中的“hello”字符串对象的内存地址。

用New String(“hello”) 创建字符串对象的时候,java虚拟机会先检查字符串常量池中是否具备该字符串对象,如果有就不再创建了。如果不存在那么就会在字符串常量池中创建该字符串对象,然后在堆内存创建对象并把字符串常量池中的字符串复制给堆内存中的对象,最后返回堆内存的内存地址。

String要注意的地方:
        String 类已经重写了Object类的equals方法,String类equals方法默认比较的是内容。String类的==比较的是内存地址。

作者: 微凉的暮色    时间: 2015-5-29 20:05
String 类已经重写了Object类的equals方法,String类equals方法默认比较的是内容。String类的==比较的是内存地址。
:o
是这样么,这里我总迷糊
作者: 流水0215    时间: 2015-5-29 21:08
支持一下楼主,继续加油
作者: 守株人    时间: 2015-5-29 21:55
楼主加油啊,赞一个
作者: bin2015    时间: 2015-5-30 08:38
微凉的暮色 发表于 2015-5-29 20:05
String 类已经重写了Object类的equals方法,String类equals方法默认比较的是内容。String类的==比较的是内 ...

是的,String类型的变量比较的内存地址要比较内容必须用equals
作者: bin2015    时间: 2015-5-30 09:16
守株人 发表于 2015-5-29 21:55
楼主加油啊,赞一个

多谢支持:)
作者: 夏尔    时间: 2015-5-30 09:20
总结的很好。 毕老师的视频有说过
作者: bin2015    时间: 2015-5-30 10:35
流水0215 发表于 2015-5-29 21:08
支持一下楼主,继续加油

多谢支持
作者: 流水0215    时间: 2015-5-30 19:02
不用客气的哈
作者: l598790586    时间: 2015-5-30 20:25
继续加油 !
作者: java8023    时间: 2015-5-30 21:54
string是一个引用型的类,其变量是引用型变量,那么直接打印其引用为何会是其内容,而不是其引用的内存地址值呢
作者: 熊猫宝宝    时间: 2015-5-30 21:56
是的,写的不错


作者: zlynnb2015    时间: 2015-5-30 22:10
非常正确
作者: 南方小道士    时间: 2015-5-30 23:33
路过看看
作者: Morrfree    时间: 2015-8-6 23:10
学习了,原来都是在常量池中寻找字符串,然后赋地址值,
作者: 风华正茂    时间: 2015-8-7 00:05
总结得不错,楼主好人一生平安




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2