String类的equals方法和==对比

来源:互联网 发布:淘宝店铺歌曲代码 编辑:程序博客网 时间:2024/05/30 19:35
声明:本文扩展于网上某篇文章,时间过长,已经不知道出处!!!


public class StringCompare {


  public static void A() {
    String str1 = "java";
    String str2 = "java";
    System.out.println("A:"+str1.equals(str2));  //true
  }
  
  public static void B() {
    String str1 = "java";
    String str2 = new String("java");
    System.out.println("B:"+str1.equals(str2));  //true
  }
  
  public static void C() {
    String str1 = "java";
    String str2 = "java";
    System.out.println("C:"+(str1 == str2));  //true
  }
  
  public static void D() {
    String str1 = new String("java");
    String str2 = new String("java");
    System.out.println("D:"+(str1 == str2));  //false
  }
  
  public static void E() {
    String str1 = "java";
    String str2 = "tang";
    String s = str1 + str2;
    System.out.println("E:"+(s == "javatang"));  //false
  }
  
  public static void F() {
    String str1 = "javatang";

//下一行 在编译时被优化成String str2 = "javablog";
    String str2 = "java"+"tang";  
    System.out.println("F:"+(str1 == str2));  //true
  }
  
  public static void G() {
    String s1 = "java";
    String s2 = new String("java");

//一个初始为空的字符串池,它由类 String 
//私有地维护。当调用 intern 方法时,如果
//池已经包含一个等于此 String 对象的字符串
//(用 equals(Object) 方法确定),则返回池
//中的字符串。否则,将此 String 对象添加到
//池中,并返回此 String 对象的引用。

    System.out.println("G:"+(s1.intern() == s2.intern()));  //true
  }
  
  public static void main(String[] args){
    A();
    B();
    C();
    D();
    E();
    F();
    G();
  }
}
原创粉丝点击