【Java程序设计】对于字符串而言“==”和“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。

おすすめ

転載: blog.csdn.net/passer__jw767/article/details/111350355