黑马程序员技术交流社区
标题:
关于 == 和 equals()方法的比较,String对象的创建
[打印本页]
作者:
王延龙
时间:
2013-7-19 03:04
标题:
关于 == 和 equals()方法的比较,String对象的创建
public class Show{
public static void main(String[] args){
String s1 = "Welcome to Java";
String s2 = new String("Welcome to Java");
String s3 = "Welcome to Java";
System.out.println(s1 == s2);// 显示false
System.out.println(s1 == s3);// 显示true
/*
* 内存中存在一个字符串缓冲区,类似理解为字符串缓冲区;
* 用双引号内的字符序列为直接量创建的字符串,存在于内存的字符串常量池中。
* 用直接量新建一个字符串对象,JVM就会到常量池中去寻找,如果没有就创建一个。
* 如果匹配那么就把已有字符串对象引用地址传递给新建对象。它们指向同一个地址值。
* 而用new操作符创建的对象,在堆内存中创建一个对象,并把地址传递给变量
*
* 操作符 == 比较两对象的地址值
* 方法equals()根据字符串特点进行了覆写与Object类中的equals()方法不同,它比较两字符串对象的内容。
*/
System.out.println(s1.equals(s2));// 显示true
s1 = "Hello Java";// 原来字符串中String s1 = "Welcome to Java" s1 的内容并没有更改,只是变量引用值s1指向新的对象地址;
System.out.println(s1 == s3);// 显示false
System.out.println(s2.equals(s3)); //显示true
System.out.println(s2 == s3); //显示false
}
}
复制代码
作者:
肥猫
时间:
2013-7-19 07:47
不全面啊,还有,这个是问题么?未解决什么?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2