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类的对象的引用,并且会产生大量字符串垃圾。应该尽量避免出现不断修改字符串内容的现象,以免出现大量垃圾。
拼命敲