“==”在八种原始数据类型中,判断的是两边的值是否相等。对于对象类型来说,判断的是内存地址,所以为true所满足的条件就是两边的引用指向同一个对象。

比如String s1 = "abcde"; String s2 = "abcde";这个时候如果判断两者是否==,值为true;这是因为两者指向同一个对象。

然而如果String s1 = "abcde"; String s2 =new String("abcde");则为false;因为指向的不是同一个对象。

equals()方法一般是继承与Object,在Object中,方法定义是这样的:

public boolean equals(Object obj) {
return (this == obj);

所以说如果没被改写,判断的也是内存地址,和==是相同的

然而需要注意的是String类(同理的还有Integer)中是改写了这个方法的

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}

比较的是两者的字符串的内容是否相等。这样equals()和==在String里面就不是一个意思;

==成立的时候equals肯定成立

==不成立的时候,equals未必不成立

比如“  XXXX    ”.trim()和“XXXX”,是两个对象,所以一定不能==成立

但是equals是成立的。

这个问题很重要,不然在写mvc判断提交的密码和根据这个用户名在数据库中找到的密码是不是相等,你用一个==,这个肯定是false,因为是两个字符串对象了。

只能用equals,这个也是String、Integer等为什么要改写equals方法,因为他们本质是类,但是和基本数据类型太像了。

string(Integer)类的equals和==区别和联系(验证密码的时候用得到)的更多相关文章

  1. Integer 类和 int 的区别

    http://www.cnblogs.com/ysocean/p/8075676.html public static void main(String[] args) {     Integer i ...

  2. 关于String类型中==和equals的区别。

    "=="操作符的作用 1.用于基本数据类型的比较,比较的是值. 2.用于比较对象,判断对象的引用是否指向堆内存的同一块地址. equals的作用 用于比较两个对象的内容是否相同 代 ...

  3. String类型中"=="和"equals"的区别

    "=="比较的是两个字符串的内存地址.  "equals"比较的是两个字符串的实际值. 例子1. String s1="abc"; Stri ...

  4. Integer类之equals与hashCode

    一.源码. 1.equals源码.可以看出,比较的是两者的类型相同且内容相同.即是否有相等的int类型的value值. ######################################## ...

  5. Integer 类和 int 基本数据类型的区别

    public static void main(String[] args) { Integer i = 10; Integer j = 10; System.out.println(i == j); ...

  6. java中的BigDecimal和String的相互转换,int和String的类型转换,Integer类和String相互转换

    一: /*由数字字符串构造BigDecimal的方法 *设置BigDecimal的小数位数的方法 */ 注:BigDecimal在数据库中存的是number类型. import java.math.B ...

  7. 浅谈 Integer 类

    在讲解 Integer 之前,我们先看下面这段代码: public static void main(String[] args) { Integer i = 10; Integer j = 10; ...

  8. Integer类入门学习

    Integer类 它是一个类,是 int 基本数据类型的封装类. 基本API Integer 类和 int 的区别 Integer 是 int 包装类,int 是八大基本数据类型之一(byte,sho ...

  9. 【转】浅谈 Integer 类

    突然发现自己对Integer i = 10;这种语法不太明白,于是乎有了这篇文章,那么在讲解 Integer 之前,我们先看下面这段代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

随机推荐

  1. html list <==> unformatted list

    两者的区别很大不得不擦呢,任何两个东西的差别都很大,不得混淆.---一个有ul/ol的选择,一个没有

  2. Canu FAQ常见问题

    链接:Canu FAQ Q: What resources does Canu require for a bacterial genome assembly(细菌基因组组装)?   A mammal ...

  3. java 集合(Map2)

    Map 接口的迭代方法: import java.util.*; public class ex12 { public static void main(String[] args) { Map< ...

  4. 使用Beanstalkd_console

    作用:可以将 beanstalkd 的队列信息展示在图形化的操作界面一样,这样不仅给我么查看队列信息有很大的帮助,也可以形象地理解队列任务具体内容 使用操作:(前提条件是前面的队列能正常执行,) 首先 ...

  5. python 练习 23

    python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句 ...

  6. Python安装BeautifulSoup库(Windows平台下)

    简介 参照官网Beautiful Soup4.4.0文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 安装步骤 1.到https:// ...

  7. Caffe 深度学习框架介绍

    转自:http://suanfazu.com/t/caffe/281 Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清,目前在Google工作. Caffe是 ...

  8. BZOJ3307 雨天的尾巴

    首先考虑序列怎么做... 只要把操作差分了,记录在每个点上 然后维护一棵权值线段树,表示每个颜色出现的次数,支持单点修改和查询最大值操作 只要把序列扫一遍就好了,时间复杂度$O(n + m*logZ) ...

  9. [转载]DataSet导入到Excel文件

    /// <summary>    /// 将数据导入到Excel    /// </summary>    /// <param name="ds"& ...

  10. [转]AndroidTolls国内镜像

    AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具. ...