用久了C#,在Java中,判断一个字符串还是习惯性的用了==,但是总是不能按照正确的判断分支运行,后来才想起来Java中是有equals的,然后就有引出了equalsIgnoreCase。
 
这三种的正确运用能对敲代码的时候减少不少烦躁的机会。

一、==
==是最经典的判断,此符号判断的是两个对象的值,即对象的内存地址。

[java]
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);
[/java]
这两个字符串字符是相同的,但是内存地址不同,用==判断输出结果是:false;
 
二、equals和equalsIgnoreCase
equals是Object的方法,用来判断两个对象是否相同,在判断字符串时它判断的是两个对象的内容是否相同。
 
equalsIgnoreCase是String的判断方法,只能判断两个字符串。

[java]
String s1 = new String("abc");
String s2 = new String("Abc");
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
[/java]

上面的例子中,输出结果为:false true
 
equalsIgnoreCase大小写不敏感 equals大小写敏感。
 
引申:

如果第一个例子写成这样:

[java]
String s1 = "abc";<
String s2 = "abc";
System.out.println(s1 == s2);
[/java]

输出结果就会是:True。
 
这是为什么呢?
 
在声明变量的时候,如果用=直接赋值,此时如果变量池中有相同值的字符串,那么就会直接把这个对象的地址赋给新的变量。
 
而new String("abc")则会重新生成一个变量地址。

Java中equals()、equalsIgnoreCase()和==的区别的更多相关文章

  1. Java中equals和hashcode的区别?

    Java中equals和hashcode方法是在Object对象中的,所以每个对象都有这两个方法,大多数时候我们为了实现特定需求需要重写这两个方法 equals和hashcode方法常用在同一个类中用 ...

  2. Java中equals和==之间的区别

    今天在写表达式求值的时候,发现了equals和==||!=和!equals()之间是不一样的. 我就从网上搜了搜关于这方面的知识,然后在下面做一个总结: Java中有两类数据类型: 基本数据类型(Pr ...

  3. (转)java中equals和等号(==)的区别浅谈

    java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==) ...

  4. java中equals和compareTo的区别---解惑

    大多转载自 百度知道,个人整理以便日后阅读. value1.compareTo(value2) == 0 value1.equals(value2) equals的效率高些,compareTo其实就是 ...

  5. 简述java中equals()方法和==的区别

    ==与equals的主要区别是: ==: ==常用于比较原生类型(基本数据类型):byte,short,char,int,long,float,double,boolean,比较的是他们的值. 若用= ...

  6. java中equals与==号的区别

    1.==号对于基本数据类型来说,比较的是值,对于引用数据类型来说比较的是地址值 2.equals方法在object类中,比较的是地址值,但是String类重写了Object类中的equals方法,所以 ...

  7. Java中equals与==和comparaTo的区别

    一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...

  8. java中equals和==的区别 (转)

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

  9. 【转】Java中equals和==的区别

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

  10. 关于java中equals与==的区别的小实验

    java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的两个对象在JVM中的地址,是一种操作符. 做了几个小实验比较结果. 实验一: String ...

随机推荐

  1. php获取不到url问号之后的参数

    url规则已定义: RewriteRule ^/member/editprivilege/([0-9]+) /access.php?_u=mobile/editprivilege&aid=$1 ...

  2. Ubuntu 18.04安装网易云音乐(转载)

    作为Ubuntu下唯一一款超级好用的音乐软件,必须下载. 提升为root权限后操作 0 : 网易云音乐1.0.0(该版本较为好安装)下载地址 http://s1.music.126.net/downl ...

  3. 洛谷P4302 [SCOI]字符串折叠 [字符串,区间DP]

    题目传送门 字符串折叠 题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS…S(X个S). 如 ...

  4. 洛谷P1280 尼克的任务 [DP补完计划]

    题目传送门 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从 ...

  5. 配置文件报错:元素类型 "XXX" 必须后跟属性规范 ">" 或 "/>"

    这是一个比较常见的配置错误,一般分两步. 有的情况的确是xml文件出现了语法问题,可以让IDE来帮我们检查xml文件是否真的出现了语法错误.把xml内容复制进IDE中,让IDE帮我们检查错误. 如上图 ...

  6. 洛谷——P3908 异或之和

    P3908 异或之和 题目描述 求1 \bigoplus 2 \bigoplus\cdots\bigoplus N1⨁2⨁⋯⨁N 的值. A \bigoplus BA⨁B 即AA , BB 按位异或. ...

  7. 【转载】Virtual Box下配置Host-Only联网方式详解

    其实网络这类相关的文章很多,我只是想结合自己的实际情况,把我的经验写下来,给那些需要的人们吧. 主机:windows 7 虚拟机:CentOS6.0 VirtualBox:4.2.0 虚拟机在安装好之 ...

  8. Codeforces 551 D. GukiZ and Binary Operations

    \(>Codeforces \space 551 D. GukiZ and Binary Operations<\) 题目大意 :给出 \(n, \ k\) 求有多少个长度为 \(n\) ...

  9. 【带权并查集】poj1182 食物链

    带权并查集,或者叫做种类并查集,经典题. http://blog.csdn.net/shuangde800/article/details/7974668 这份代码感觉是坠吼的. 我的代码是暴力分类讨 ...

  10. Android Toolbar返回按钮颜色修改

    // 代码设置toolbar返回键颜色为白色 val upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mater ...