面向对象高级
(一.)String类
- String是字符串的意思,它是一种引用数据类型,同时它也是一个类(class);它和常用的基本类型不同。
1、String有两种创建字符串的方式如:
// 第一种方式是:直接赋值(变量)
String str = "Hello";
// 第二种方式是:构造方法创建(对象)
String str1 = new String("hello");
2、== 和 equals 有何区别?
区别:
- 首先 == 是一个操作符,而 equals() 是 Object 类中的一个方法;只能用来比较字符串是否相等;
- 当使用 == 比较基本数据类型的时候,== 比较的数值;当比较字符串的时候 == 比较的时候堆内存中的内存地址;
- 当使用 equals() 方法比较字符串的时候它比较的字符串的具体内容;
- equals() 不能比较数据类型。
注意:equals() 在比较时会区分大小写的,如果大小写不一致是不会相等的。
练习:
package zhai.string;
/*
String类的创建方式
*/
public class StringDemo1 {
public static void main(String[] args) {
int a = 10;
int b = 10;
String s = "s:hello";
String s1 = new String("s1:hello");
System.out.println(s);
System.out.println(s1);
System.out.println("使用 == 比较字符串 ==============================");
// == 比较堆内存的地址
if (s==s1){
System.out.println("s==s1");
}else {
System.out.println("s!=s1");
}
System.out.println("使用 equals 比较字符串 ============================");
// equals 比较的是字符串内容
if (s.equals(s1)){
System.out.println("s==s1");
}else {
System.out.println("s!=s1");
}
System.out.println("使用 == 比较数据类型 ==============================");
// 使用 == 比较基本数据类型
if (a == b){
System.out.println("a==b");
}else {
System.out.println("a!=b");
}
}
}
输出:
s:hello
s1:hello
==============================================
s!=s1 // 注意:两个字符串的内容完全相等,所以肯定它比较的是内存地址
使用 == 比较字符串 ==============================
s==s1 // 这个比较的是字符串内容
使用 equals 比较字符串 ============================
a==b // 这个比较的是数值
使用 == 比较数据类型 ==============================
equals() 比较的时候会区分大小写,通过 equalsIgnoreCase() 可以无视大小写,比较字符串内容是否相等.
package zhai.string;
public class StringDemo2 {
public static void main(String[] args) {
String a = "a";
String b = "A";
System.out.println(a.equals(b)); // 这里是区分大小写的
// 使用 equalsIgnoreCase 可以无视大小写,指比较内容是否相等
System.out.println(a.equalsIgnoreCase(b));
}
}
输出:
false // equals() 会区分大小写的
true // equalsIgnoreCase() 这个方法不会区分大小写,指比较字符串内容~