首页 > 编程语言 >Java中比较两个字符串==和.equals()区别

Java中比较两个字符串==和.equals()区别

时间:2024-01-31 21:23:45浏览次数:30  
标签:abc Java String equals str 字符串 比较

在 Java 中,== 和 .equals() 都是用于比较两个字符串是否相等的运算符,== 比较的是两个字符串的引用地址,而 .equals() 比较的是两个字符串的内容。只有当两个字符串变量指向同一个字符串对象时,== 和 .equals() 才会返回相同的结果

 参考文档:Java中比较两个字符串==和.equals()区别-CJavaPy

1、使用 == 运算符

== 用于比较两个对象的引用或内存地址,而不是比较它们的内容。当使用 == 来比较两个字符串时,实际上是在检查这两个字符串对象是否指向同一个内存位置。如果两个字符串变量指向同一个字符串常量池中的对象,== 比较将返回 true。但如果它们指向内存中不同的位置,即使它们包含完全相同的字符序列,== 也会返回 false

2、使用 .equals() 方法

.equals() 方法用于比较两个对象的内容是否相等。在 String 类中,.equals() 被重写以比较字符串的内容。当使用 .equals() 比较两个字符串时,它会检查这两个字符串是否具有相同的字符序列。不考虑这两个字符串对象在内存中的位置,只要它们的内容相同,.equals() 就会返回 true

3、String str="abc" 和String str = new String("abc")创建字符串区别

String str="abc"创建字符串,如果String常量池中有个字符串,则str就指向"abc"内存象地址,多次声明"abc",内存中只会有一个"abc"。

String str = new String("abc")创建字符串,不管String常量池中是否有个字符串,都会重新分配,然后str指向它。内存中可能会有两个不同内存地址的"abc"。

4、字符串比较

使用 == 运算符和使用 .equals() 方法对字符串进行比较的区别,代码如下,

public class Main {
  public static void main(String[] args) {
      String str1 = new String("Hello");
      String str2 = new String("Hello");
      String str3 = "Hello";
      String str4 = "Hello";
      
      // 使用 == 运算符
      System.out.println(str1 == str2); // false,因为 str1 和 str2      指向不同的对象
      System.out.println(str3 == str4); // true,因为 str3 和 str4       指向字符串常量池中的同一个对象
      
      // 使用 .equals() 方法
      System.out.println(str1.equals(str2)); // true,因为 str1 和 str2      的内容相同
      System.out.println(str3.equals(str4)); // true,因为 str3 和 str4 的内容相同
  }
}

参考文档:Java中比较两个字符串==和.equals()区别-CJavaPy

标签:abc,Java,String,equals,str,字符串,比较
From: https://www.cnblogs.com/tinyblog/p/18000153

相关文章

  • Java学习----基本语法
    1.注释有哪几种形式(1)单行注释:通常用于解释方法内某行代码的作用(2)多行注释:通常用于解释一段代码的作用(3)文档注释:通常用于生成Java开发文档2.标识符和关键字的区别(1)标识符就是一个名字(2)关键字不可以当做名字,不可修改,关键字是被赋予特殊含义的标识符3.自增(自减运算符)(1)后自增,......
  • Java的面向对象
    面向对象什么是面向对象面向对象思想:物以类聚,分类的思维方式。面向对象适合处理复杂的问题,适合处理需要多人协作的问题属性+方法=类面对象的本质:以类的方式组织代码,以对象的组织(封装)数据。三大特性:封装继承多态回顾方法及加深方法的定义:修饰符返回类型break:跳出sw......
  • Java 异常
    异常Error和ExceptionJava把异常当作对象处理,并定义一个基类java.lang.Throwable作为所有异常的超类异常类分为两大类:Error错误和Exception异常Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,JAVA虚拟机(JVM)一般会选择终止线程Exception通常情况下可以......
  • Java的方法详解
    Java方法详解什么是方法Java方法是语句的集合,它们在一块执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或者对象中方法在程序中被创建,在其他地方被引用方法命名规则:驼峰原则publicclassDemo01{//main方法publicstaticvoidmain(String[]......
  • Java 数组
    数组数组是相同类型数据的有序集合。数组的声明和创建publicclassDemo01{//变量的类型变量的名字=变量的值//数组类型publicstaticvoidmain(String[]args){//首先声明数组变量int[]nums;//定义,首选这种intnums2[]......
  • Java的基础语法
    Java基础语法注释:书写注释是一个非常好的习惯,平时写代码一定要规范单行注释://多行注释:/**/文档注释JavaDoc:/***/标识符不能使用关键字作为变量名和方法名标识符大小写敏感首字母以字母、_以及$开头可以使用中文名,但是不建议,也不建议使用拼音,很low数据类型......
  • Java的流程控制
    Java流程控制Scanner对象我们通过Scanner类获取用户的输入。基础语法:Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。next():一定要读取到有效字符才可以结束......
  • Java 的开始
    Java的jdk、jre、jvmjdk:JavaDelelopmentKitjre:Java运行环境jvm:JavaVirtualMachine卸载jdk删除java的安装目录删除Java_HOME删除path下关于Java的目录通过java-version检查安装jdk百度搜索JDK8,找到下载地址同意协议下载电脑对应的版本双击安装JDK......
  • java flink(二十六) 实战之电商黑名单过滤 Flink CEP编程实现、什么是CEP、CEP组合模式d
    javaflink(二十六)实战之电商黑名单过滤FlinkCEP编程实现、什么是CEP、CEP组合模式demo、CEP循环模式demo什么是CEP:1、复杂事件处理2、Flink中实现复杂事件处理库3、CEP允许在无休止的事件中检测事件模式,让我们有机会掌握数据中的重要部分4、一个或多个由简单事件构成的事......
  • 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
    反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。题目链接:344.反转字符串-力扣(LeetCode)关于是否用reverse函数解决问题:如果题目......