String s = new String(“hello”)和String s = “hello”;的区别?
答:有。前者会创建2个对象,后者创建1个对象。
==:比较引用类型比较的是地址值是否相同
equals:比较引用类型默认也是比较地址值是否相同,而######String类重写了equals()方法,比较的是内容是否相同。
String s1 = new String("hello");
String s2 = "hello";
System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));// true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);// 字符串字面量,直接从内存找,所以true
System.out.println(s5.equals(s6));// true
看程序写结果
字符串如果是变量相加,先开空间,在拼接。
字符串如果是常量相加,是先加,然后在常量池找,如果有#####就直接返回,否则,就创建。
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);// false。字符串如果是变量相加,先开空间,再拼接。
System.out.println(s3.equals((s1 + s2)));// true
System.out.println(s3 == "hello" + "world");//true。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
System.out.println(s3.equals("hello" + "world"));// true
通过反编译看源码,我们知道这里已经做好了处理。
// System.out.println(s3 == "helloworld");
// System.out.println(s3.equals("helloworld"));
String类的判断功能:
1.boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
2.boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
3.boolean contains(String str):判断大字符串中是否包含小字符串
4. boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
5.boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
6.boolean isEmpty():判断字符串是否为空。
public class StringDemo {
public static void main(String[] args) {
// 创建字符串对象
String s1 = "helloworld";
String s2 = "helloworld";
String s3 = "HelloWorld";
// boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
System.out.println("equals:" + s1.equals(s2));
System.out.println("equals:" + s1.equals(s3));
System.out.println("-----------------------");
// boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println("equals:" + s1.equalsIgnoreCase(s2));
System.out.println("equals:" + s1.equalsIgnoreCase(s3));
System.out.println("-----------------------");
// boolean contains(String str):判断大字符串中是否包含小字符串
System.out.println("contains:" + s1.contains("hello"));
System.out.println("contains:" + s1.contains("hw"));
System.out.println("-----------------------");
// boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
System.out.println("startsWith:" + s1.startsWith("h"));
System.out.println("startsWith:" + s1.startsWith("hello"));
System.out.println("startsWith:" + s1.startsWith("world"));
System.out.println("-----------------------");
// 练习:boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾这个自己玩
// boolean isEmpty():判断字符串是否为空。
System.out.println("isEmpty:" + s1.isEmpty());
String s4 = "";
String s5 = null;
System.out.println("isEmpty:" + s4.isEmpty());
// NullPointerException
// s5对象都不存在,所以不能调用方法,空指针异常
// System.out.println("isEmpty:" + s5.isEmpty());
}
}
String类的获取功能
网友评论