基本数据类有:byte short int long float double char boolean 这8种类型的 变量名和值 都存储在栈空间中,而String类型是引用数据类型,String在栈中只储存 变量名和堆地址值
因此8种基本数据类型可以直接用==来判断是否相等
而String作为引用数据类型,用==是判断二者地址是否相同,用equals方法才是判断值是否相等
equals用法:
if ( a.equals(b) ) { 函数体 }
==用法:
if ( a==b ) { 函数体 }
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//实例化Scanner
String a = "abc";
String b = new String("abc");
//因为String是引用数据类型,所以可以用new来new一个String
System.out.println("输入:abc");
String c = scan.next();
//从键盘输入的abc和直接定义效果一样
System.out.println("/*****equals是判断内容值是否相等*****/");
if (a.equals(b) && b.equals(c) && c.equals(a)) {
System.out.println("a equals b && b equals c && c equals a");
}
System.out.println("/*****==是判断二者引用是否相同*****/");
c = a;
//c指向a
if (a == c && a.equals(c)) {
// 引用传递之后值也一定相等 if(true)
System.out.println("a==c && a.equals(c)");
}
if (b == c || a == b) {//引用不同,if(false)
System.out.println("b=c");
} else {
System.out.println("b!=c a!=b");
}
}
}
结果: