String的equals()和==
场景:
场景:登入验证,查看用户密码是否正确,我获取数据的密码,同时和用户输入的进行对比,明明输入的密码正确,但是一直返回false。
//user.getUPassword() = fdfsf
//upassword = fdfsfboolean b = (user.getUPassword() == upassword);
然后想起了以下内容:
== 和 equals 的区别是什么
它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
举个例子:
public class test1 {public static void main(String[] args) {String a = new String("ab"); // a 为一个引用String b = new String("ab"); // b为另一个引用,对象的内容一样String aa = "ab"; // 放在常量池中String bb = "ab"; // 从常量池中查找if (aa == bb) // trueSystem.out.println("aa==bb");if (a == b) // false,非同一对象System.out.println("a==b");if (a.equals(b)) // trueSystem.out.println("aEQb");if (42 == 42.0) { // trueSystem.out.println("true");}}
}
说明:
String中的equals方法是被重写过的,因为object的equals方法是比较的对象的内存地址,而String的equals方法比较的是对象的值。
当创建String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个String对象。
总结及解决方法
总结:String是引用类型,所以==比较的是地址,equals()比较的是值,此地应该用equals()比较
boolean b = (user.getUPassword().equals(upassword));
成功!
String的equals()和==相关推荐
- ==与equals,String的equals()方法
==介绍 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址). 基本数据类型:byte,short,char,int,lo ...
- 问题2 String类equals 和 “==” 比较
"==" 比较是否为同一对象,即涉及到内存地址是否相同 "String 中equals" 比较对象中的内容 "Object 中equals" ...
- String的equals方法原理
一,前言: 我们都知道String的equals方法,是用来比较两个字符串的内容是否是相等的, 如果比较内存地址用的是==. 那么String的equals方法是如何来比较两个字符串的内容是否是相等的 ...
- String比较.equals
首先定义四个变量str public class SIzhui {public static void main(String[] args) {String str1="wang" ...
- Integer及String的equals及==注意示例,涉及自动拆箱、自动装箱以及equals源码分析
1. 只要不是创建的Integer对象,那么 -128--127 范围内的数都是相等的,因为不是创建的Integer对象,不管Integer对象是直接赋值,还是调用parseInt,最终都是通过val ...
- 面试(2)——StringBuffer StringBuilder String /==与equals
最近有小伙伴问我面试的时候,经常会问些什么问题,其实面试的时候,面试官无非就是面试一些基础,怎么问呢,就是会根据你简历上所写的技术点进行询问,由浅到深.你可能会说,那这样我面试的时候少写一些,那问你的 ...
- java.lang中String=和equals()函数解析
java.lang是java语言的基础包.String类为lang包中的一个基础类.本文主要讨论 "="和"equals()"方法对String的不同判断结果. ...
- String的equals方法
简单来说,就是 String 重写了 Object 的 equals 方法,把引用比较改成了值比较. public boolean equals(Object anObject) {//判断是否是同一 ...
- 【Java源码分析】String 比较 equals
equals() equals() 方法用于将字符串与指定的对象比较. String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等. 语法 public boolean equa ...
最新文章
- Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界
- 从自监督学习主流方法、最新工作进展,看未来前景研究方向
- storm从入门到放弃(一),storm介绍
- 表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~
- aria2c rpc php,aria2c 的基本配置,附带傻瓜式源码
- 将两大小完全相同的照片进行加权混合对比
- 删除列表中满足一定条件的元素
- 迅雷下载的都是download.php,CMS_dedecms 下载地址加迅雷专用链的操作方法 比较全,特别注意!!!!!!!!! - phpStudy...
- 安装Debian7后遇到的问题与解决办法
- 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧
- 读名老中医之路笔记(四)
- 第十届蓝桥杯B组C/C++省赛编程题题目及答案解析
- 重磅!2020国家科学技术奖全名单公布!
- 用C语言递归实现火车调度算法详解
- 企业私有云建设需求分析
- thunderbird 配置exchange邮箱
- 如何高效的完成每日的任务?
- Docker系列文-----Docker的网络类型(4)
- 自建服务器系列-0元搭建linux服务器(windows笔记本)
- 关于Visual Studio订阅(原MSDN订阅)中无法激活Office 365权益的解决方法(仅适用于MVP)