黑马程序员技术交流社区

标题: 关于 == 和 equals()方法的比较,String对象的创建 [打印本页]

作者: 王延龙    时间: 2013-7-19 03:04
标题: 关于 == 和 equals()方法的比较,String对象的创建

  1. public class Show{

  2.         public static void main(String[] args){
  3.        
  4.                 String s1 = "Welcome to Java";
  5.                 String s2 = new String("Welcome to Java");
  6.                 String s3 = "Welcome to Java";
  7.                
  8.                 System.out.println(s1 == s2);// 显示false
  9.                 System.out.println(s1 == s3);// 显示true

  10.                 /*
  11.                  * 内存中存在一个字符串缓冲区,类似理解为字符串缓冲区;

  12.                  * 用双引号内的字符序列为直接量创建的字符串,存在于内存的字符串常量池中。
  13.                  * 用直接量新建一个字符串对象,JVM就会到常量池中去寻找,如果没有就创建一个。
  14.                  * 如果匹配那么就把已有字符串对象引用地址传递给新建对象。它们指向同一个地址值。

  15.                  * 而用new操作符创建的对象,在堆内存中创建一个对象,并把地址传递给变量
  16.                  *
  17.                  
  18.                  * 操作符 == 比较两对象的地址值
  19.                  * 方法equals()根据字符串特点进行了覆写与Object类中的equals()方法不同,它比较两字符串对象的内容。  
  20.                  */                 

  21.                 System.out.println(s1.equals(s2));// 显示true

  22.                 s1 = "Hello Java";// 原来字符串中String s1 = "Welcome to Java" s1 的内容并没有更改,只是变量引用值s1指向新的对象地址;

  23.                 System.out.println(s1 == s3);// 显示false
  24.                 System.out.println(s2.equals(s3)); //显示true
  25.                 System.out.println(s2 == s3); //显示false
  26.         }
  27. }
复制代码

作者: 肥猫    时间: 2013-7-19 07:47
不全面啊,还有,这个是问题么?未解决什么?




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