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

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

先上结论

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;
}


运行结果

fb450a2322d3875bafacb00c72d283a5_961cb53e0c784cf2a3d29a1c2077adab.png

结果解释: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不相等");
  }
}


运行结果

16c58437327316557411e4920f189ca3_206dc8d4845b47978530a9abc17e3bde.png

结果解释: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不相等");
  }
}


运行结果

be0be837183af42369dd149e4dbcf0fd_10800ea4374242afb283aa49cd162318.png

结果解释:由于这两个字符串分别创建了两个对象(使用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不相等");
  }
}


运行结果

20399b5b60ced30bfc3fefe39a40f948_43897453da3d4485b90f02b6608a5f47.png

结果解释: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不相等");
  }


运行结果

965f024d908240d6aade44386dccab48_7c32df1abfc84fd79a3698fe52a77113.png

结果解释:JAVA中利用equalsIgnoreCase()(不区分大小写)成员函数来判断两字符串的值是否相等。


回顾结论

C++与JAVA之间存在着一些区别,我们需要重视区别才能更好地灵活学习和运用不同的编程语言。

总之,C++中可以利用==来判断两个字符串的值是否相等;而JAVA中必须使用String类的成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串的值是否相等。

目录
相关文章
|
29天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
142 83
|
29天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
55 26
|
21天前
|
Java Android开发 C++
Java和C++
Java和C++
34 15
|
27天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
67 14
|
23天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
22 1
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
53 8
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
52 6
|
7月前
|
存储 Java 编译器
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
java和c++的主要区别、各自的优缺点分析、java跨平台的原理的深度解析
781 0
|
7月前
|
Java 编译器 C++
Java开发和C++开发有什么区别
Java开发和C++开发有什么区别
|
6月前
|
Java C++
Java和C++的一些区别
Java和C++的一些区别