先上结论
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中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不相等"); } }
运行结果
结果解释: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不相等"); } }
运行结果
结果解释:由于这两个字符串分别创建了两个对象(使用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不相等"); } }
运行结果
结果解释: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不相等"); }
运行结果
结果解释:JAVA中利用equalsIgnoreCase()(不区分大小写)成员函数来判断两字符串的值是否相等。
回顾结论
C++与JAVA之间存在着一些区别,我们需要重视区别才能更好地灵活学习和运用不同的编程语言。
总之,C++中可以利用==来判断两个字符串的值是否相等;而JAVA中必须使用String类的成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串的值是否相等。