前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 比较两个字符串内容是否相等

Java 比较两个字符串内容是否相等

作者头像
ccf19881030
发布2020-09-22 10:18:30
7.3K0
发布2020-09-22 10:18:30
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客

最近在做项目时,编写SpringBoot后台接口时遇到一个小问题,就是当比较两个String对象内容是否相等时,我第一次使用==没有得到预想到的结果,改成String的equals()方法就OK了。由于一直使用C和C++比较多,C++种的std::string类比较两个字符串内容是否相等时可以直接使用==操作符重载运算符。 下面是根据职位名称获取职位信息以及获取所有职位信息的后台接口代码:

代码语言:javascript
复制
package org.javaboy.vhr.service;

import org.javaboy.vhr.mapper.PositionMapper;
import org.javaboy.vhr.model.Position;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Description
 * @作者 havealex
 * @微信号 havealex
 * @Github https://github.com/ccf19881030
 * @Gitee https://gitee.com/havealex
 * @博客 http://ccf19881030.blog.csdn.net
 * @ClassName PostionService
 * @Date 2020-09-21 22:33:33
 */
@Service
public class PositionService {
    @Autowired
    PositionMapper positionMapper;

    public Position getPositionByName(String name)  {
        // 先获取所有的职位信息列表
        List<Position> positionList = positionMapper.getAllPositions();
        for (Position pos: positionList) {
        	// 此处主要要使用equals()进行比较,不能使用==
            if (pos.getName().equals(name)) {
                return pos;
            }
        }
        return null;
    }

    // 获取所有的职位信息
    public List<Position> getAllPositions() {
        return positionMapper.getAllPositions();
    }
}

在Java如果用 == 对两个 数组类型变量 的内容 进行比较,则可能得到 “错误的” 结果 因为String 在Java为引用数据类型,而不是基本数据(如int,float,char······) 所以,如果要比较 两个String的内容,我们需要用到equals方法

代码语言:javascript
复制
//equals方法的使用,内容相同返回true,反之返回false
	String str1 = "abc";
	String str2 = "abc";
	if(str1.equals(str2) )
		System.out.println("str1 与 str2 内容相同 ");
	else 
		System.out.println("str1 与 str2 内容不相同 ");

Java中,关于比较两个字符串是否相等的问题,经常会出现。下面将分析使用 ==(注意:Java中 = 是赋值运算符,==是比较是否相等) 和 equals()方法 来比较两个字符串相等的区别:

简单一句话,==比较的是两个字符串的地址是否为相等(同一个地址),equals()方法比较的是两个字符串对象的内容是否相同(当然,若两个字符串引用同一个地址,使用equals()比较也返回true)。

字符串比较之所以看起来复杂,是因为值类型和引用类型两种数据类型的区别:值类型,例如 int 类型,当定义并初始化两个 int 类型的变量,int i = 1;int j = i,这两个变量 i , j 存放的的就是1这个值,使用 if(i == j)判断时,自然返回 i 和 j 是相等的 。引用类型,例如字符串类型, 当定义并初始化两个字符串类型的变量,String s = “abc”; String s2 = s; 实际上是只创建了一个String类型的对象,该对象的值为abc,而 s 和 s2 都引用这一个对象。

参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档