==与equals的区别
JVM和系统调用之间的关系
二者的详细用法
“==”的详细用法
“==”主要是判断两个字符串在内存中的位置是否相等,而不是用来比较内容的
“equals()”的详细用法
“equals()”即用来判断字符串中的内容是否相等。
详细实例
import java.util.Scanner;
class test{
public static void main(String[] args)
{
String a = "testString";
String b;
Scanner scanner = new Scanner(System.in);
b = scanner.next();
System.out.println((a == b));//输出false
System.out.println(a.equals(b));//输出true
}
}
注意事项
以下程序段会输出true
import java.util.Scanner;
class test{
public static void main(String[] args)
{
String a = "testString";
String b = "testString";
System.out.println((a == b));//输出true
System.out.println(a.equals(b));//输出true
}
}
为什么这个时候a == b就会输出true呢?
因为首先a这种初始化String的方式是将这一串字符放入常量池中的。
在初始化b的时候,JVM在常量池中找到了形如“testString”的字符串,直接让b指向了这个字符串,所以这个时候会输出true。
如果采用new String()的方式初始化字符串,则JVM会将字符串压入栈中,结果就会与上面不同。
两个字符串都用new String(),或者一个用直接初始化至常量池而另一个用new String()初始化,都会导致 “a = = b”的结果为false。