Java -- String

package test;

public class StringEquals {
    public static void main(String[] args) {
      String str1 = "str";                // --直接赋值
          String str2 = "str";            
      String str3 = str2;                     // --引用传递
          String str4 = new String("str");     // --构造方法赋值
          System.out.println(str1 == str2);     //true              
          System.out.println(str1 == str3);     //true               
          System.out.println(str1 == str4);     //false
          System.out.println(str1.equals(str4)); //true 
    }
}

手工入池

 

String str5 = new String("str").intern();   //手工入池
System.out.println(str1 == str5);      //true

 

== : 两个对象的堆内存地址的比较

equals() : 内容的比较

compareTo() : 比较的是字符串的内容[比较是根据字母顺序,严格来讲是根据字符的ASCII码值进行比较的,返回结果是第一个不同字符ASCII码的差值]

 

字符串常量是String类的匿名对象

--判断用户输入的字符串内容是否等于指定的字符串内容

 

package test;

public class StrNotNull {
    public static void main(String[] args) {
        String str = null;
        /*if (str.equals("hello")) {            //报错: java.lang.NullPointerException
            System.out.println("no");
        }*/
        if ("hello".equals(str)) {
            System.out.println("no--");            //不会报错
        }
    }
} 

 String : 字符串内容一旦声明则不可改变  

 字符串的内容不会改变,改变的是string类的对象的引用,并且会产生大量字符串垃圾。应该尽量避免出现不断修改字符串内容的现象,以免出现大量垃圾。

 

posted @ 2018-07-30 14:32  wuyueping  阅读(113)  评论(0编辑  收藏  举报