> 文章列表 > 【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

文章目录

  • 先上结论
  • C++中string
  • JAVA中String
  • 回顾结论

参考文章:这里;这里;这里

先上结论

C++中的string类型可以使用==!=来判断两个字符串的值是否相等;而JAVA不行,JAVA中==!=是用来判断两个字符串的地址是否相同(或者说是对象是否相同,即是否为同一个对象)。

C++中string

#include <iostream>
#include <string>
using namespace std;
int main()
{  string s1="abc",s2="abc";if(s1==s2) cout<<"s1和s2相等";else cout<<"s1和s2不相等"; return 0;
}
  • 运行结果

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
结果解释:C++中可以利用==来判断两个字符串的值是否相等。

JAVA中String

package hello;public class TEMP {public static void main(String args[]) throws IOException {String s1="abc",s2="abc";if(s1==s2) System.out.println("s1和s2相等");else System.out.println("s1和s2不相等");}
}
  • 运行结果

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
结果解释:JAVA中==来判断两个字符串的地址是否相同(或者说是两个字符串是否是同一对象),由于相同的字符串常量(程序中为"abc")在内存中只会存在一份,所以两个字符串指向的字符串常量是同一个地址,所以根据JAVA中,==来判断两个字符串的地址是否相同的原则可知,s1和s2相等。

package hello;public class TEMP {public static void main(String args[])  {String s1=new String("abc"),s2=new String("abc");if(s1==s2) System.out.println("s1和s2相等");else System.out.println("s1和s2不相等");}
}
  • 运行结果

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
结果解释:由于这两个字符串分别创建了两个对象(使用new开辟了两段不同的存储空间,所以两个字符串的的地址也不同,只是两个字符串对象所在地址中存储的数值(字符)相同),所以根据JAVA中,==来判断两个字符串的地址是否相同的原则可知,s1和s2不相等。

package hello;public class TEMP {public static void main(String args[])  {String s1=new String("abc"),s2=new String("abc");if(s1.equals(s2)) System.out.println("s1和s2相等");else System.out.println("s1和s2不相等");}
}
  • 运行结果

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
结果解释:JAVA中利用equas()区分大小写)成员函数来判断两字符串的值是否相等。

package hello;public class TEMP {public static void main(String args[])  {String s1=new String("abc"),s2=new String("ABC");if(s1.equalsIgnoreCase(s2)) System.out.println("s1和s2相等");else System.out.println("s1和s2不相等");}
}
  • 运行结果

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别
结果解释:JAVA中利用equalsIgnoreCase()不区分大小写)成员函数来判断两字符串的值是否相等。

回顾结论

C++与JAVA之间存在着一些区别,我们需要重视区别才能更好地灵活学习和运用不同的编程语言。
总之,C++中可以利用==来判断两个字符串的值是否相等;而JAVA中必须使用String类的成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串的值是否相等