java比较两个字符串变量_Java 比较两个字符串内容是否相等
最近在做松哥的微人事项目时,编写SpringBoot后台接口时遇到一个小问题,就是当比较两个String对象内容是否相等时,我第一次使用==没有得到预想到的结果,改成String的equals()方法就OK了。由于一直使用C和C++比较多,C++种的std::string类比较两个字符串内容是否相等时可以直接使用==操作符重载运算符。
下面是根据职位名称获取职位信息以及获取所有职位信息的后台接口代码:
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 positionList = positionMapper.getAllPositions();
for (Position pos: positionList) {
// 此处主要要使用equals()进行比较,不能使用==
if (pos.getName().equals(name)) {
return pos;
}
}
return null;
}
// 获取所有的职位信息
public List getAllPositions() {
return positionMapper.getAllPositions();
}
}
在Java如果用 == 对两个 数组类型变量 的内容 进行比较,则可能得到 “错误的” 结果
因为String 在Java为引用数据类型,而不是基本数据(如int,float,char······)
所以,如果要比较 两个String的内容,我们需要用到equals方法
//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 都引用这一个对象。
参考资料
本文同步分享在 博客“雪域迷影”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
java比较两个字符串变量_Java 比较两个字符串内容是否相等相关推荐
- java怎么实现字符串反转_Java多种方法实现字符串反转!
来自牛客网 题目描述 接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串.(字符串长度不超过1000). 示例 输入:abcdefg 输出:gfedcba 解决思路 (主函数中实现)1. ...
- java 字符串旋转_Java之左旋转字符串
如果你对Java的字符串还不是很了解,那可以先看看这篇Java之左旋转字符串,希望本文所提供知识点可以帮助到你,下面随爱站技术小编来一起看看吧. 题目:定义字符串的左旋转操作:把字符串前面的若干个字符 ...
- java字符串序列化_java对象序列化为字符串
1 场景 java对象某些时候,需要序列化成字符串存储在数据库中,需要的时候,再将字符串反序列化为java对象. 如使用shiro缓存分布式session,需要将session对象序列化成字符串存储在 ...
- Java学习 10-布尔型变量的使用以及输出字符串的提示
布尔型变量(Boolean) 1.通常用在条件运算里 2.只能是 true 或者 false 输出字符串的提示 1.要输出字符串,必须用到双引号 2.在字符串中可以使用转义字符 3.单纯输出转义字符, ...
- java 两个list排序_java实现两个不同list对象合并后并排序
工作上遇到一个要求两个不同list对象合并后并排序 1.问题描述 从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序. 2.思路 从数据库中查询到的数据放到各自list中, ...
- java判断两个int相等_Java 判断两个变量是否相等
判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...
- java两个字符串前缀_java – 找到两个字符串的最长公共前缀
我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...
- java 输出字符串变量_java打印字符串变量
运行(看似简单)代码时,我会收到一些奇怪的输出.这是我有的: import java.util.Scanner; public class TestApplication { public stati ...
- java如何定义一个字符栈_Java性能优化之字符串优化处理
本文来源于: https://blog.csdn.net/xlgen157387/article/details/51870322 1.String对象 String对象是java中重要的数据类型,在 ...
最新文章
- Nsight Compute Profilier 分析
- 转:项目报告应该汇报什么内容?
- sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)
- 暑假集训8.10-网络流套树剖套线段树
- linux iptables 命令简介
- Python入门--基本输入输出
- [攻防世界 pwn]——level0
- Flask部署| gunicorn、nginx部署flask项目,并用supervisor来管理进程
- RabbitMQ 入门:1. Message Broker(消息代理)
- coco creator编辑动画坑之拖图片
- oracle存储过程拆分字符串函数,Oracle中利用存储过程来分割字符串
- linux下kafka安装与配置
- 网友写的验证码生成方案,可防止绝大多数机械识别。
- 洛谷 P2317 [HNOI2005]星际贸易 解题报告
- 【Linux】Mac在VMware中安装ubuntu教程和安装时遇到键盘鼠标失效等问题的解决方案
- Android——多功能记事本(Android Studio)
- 阿里云maven仓库的使用详解以及报错解决方法
- 沈师 Java程序设计 PTA 填空题、程序填空题答案
- ISCC2017 Misc write up附件题目文件
- 个人网站引入B站视频播放,个人博客播放B站视频。【1080P】