java中字符串相等的判断

今天需要写一个Java的小程序需要判断一下从控制台输入的字符串是否相等,在使用的过程中发现直接使用“==”来判断是没有办法判断出来的,Google&百度了一下,找到一个解决办法

1. 用“==”运算符,该运算符表示指向字符串的引用是否相同

比如说:

1
2
3
String a="abc";String b="abc";
a==b;//将返回true。
/*这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象*/

再比如:

1
2
3
String a=new String("abc");
String b=new String("abc");
//那么a==b将返回false,因为a和b指向不同的对象。

用scanner类获取字符串来比较的时候:

1
2
3
4
5
6
7
Scanner input=new Scanner(System.in);//新建input对象,用于实现输入功能
String a="exit";//定义一个字符串
System.out.println("请输入您想输入的字符串:");
String get=input.nextLine();//获取输入得的字符串的值
if(get==a){
System.out.println(a);
}//这个时候没有输出值

2. 用equals方法,该方法比较的是字符串的内容是否相同

比如:

1
2
3
String a=new String("abc");
String b=new String("abc");
a.equals(b);//将返回true。

所以通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法。

推荐阅读