文章目录
- 先上结论
- 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中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()
(不区分大小写)来判断两个字符串的值是否相等。