java的equals和==的比较示例

先看例子:


代码如下:

package com.amos;
/**
 * @ClassName: EqualTest
 * @Description:Java中的equal和==的比较
 * @author: amosli
 */
public class EqualTest {
    public static void main(String[] args) {
        int a = 1;
        float b = 1.0f;
        System.out.println(a == b);// true
        String c = new String("hi_amos");
        String d = new String("hi_amos");
        System.out.println(c == d);// false
        System.out.println(c.equals(d));// true
    }
}

Java中判断两个变量是否相等主要有两种判方式:一种是利用==运算符,另一种是利用equals方法来判断两者是否相同.

1).当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型,不要求数据类型严格相同,只要两个变量的值相等,那么将返回true.

2).如果对于两个引用类型变量,它们必须指向一个对象时,==判断才会返回true.==不可用于比较类型上没有父子关系的两个对象.

如上可以解释同样一new String时,==判断两者是否相同返回的是false,而equals返回的是true.

equals方法针对的String类,查看其源码,可以发现其实equals只能算是==的一种特例.如下面源码所示:

代码如下:

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方法实际上一开始就调用了==判别式,然后再判断其进一步值是否正确

(0)

相关推荐

  • java中equals和等号(==)的区别浅谈

    java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类)   当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false.JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个eq

  • java equals和=,==的区别详细介绍

    Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据类型(类) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false. JAVA当中所有的类都是继承于Object这个基类的,在Ob

  • java String 类的一些理解 关于==、equals、null

    1.String 的==与equal() 在对字符串的相等判断,==判断的是地址是否相同,equal()判断的是字符值是否相同.大多数时候==跟equal()的结果都是相同的.这是因为String对象是不变模式的,如果你不是明确地new一个String对象,Java对于String对象的保存默认的是会把新生成的String 对象放到一个缓冲区,然后每次判断缓冲区中是否已经有了这个对象,如果有了,那么后建立的同样字符值的String对象也会指向最初建立是该字符值对象的地址.也就是说字符值相同的时候

  • java中"==" 与equals方法的使用

    复制代码 代码如下: public class equalsDemo {     public static void main(String[] args){ /*使用==来判断两个变量是否相等时,如果两个变量时基本数据类型的          变量时,且都是数值类型是,则只要两个变量的值相等,使用==判断就返回true*/ int i=65;         float f=65.0f;         System.out.println(i==f);//true         char

  • Java中==与equals的区别小结

    public class Compare { /** * == 与 equals()区别 */ public static void main(String[] args) { String s1 = new String("Hello,World!"); //创建两个String型对象引用; String s2 = new String("Hello,World!"); String s3 = s1; //将s1对象引用赋予s3 System.out.printl

  • 基于Java字符串 "==" 与 "equals" 的深入理解

    虽然关于Java字符串"=="和"equals"的问题是Java学习中的最基础的一个问题,但是仍然有不少刚刚学习Java的同学搞不清楚里面的原理,最近和朋友讨论到这个问题,所以写篇文章给大家分享一下我自己的理解.首先让我们看一个例子: 复制代码 代码如下: public class TestStringEquals { public static void main(String[] args) { String a = "test";     

  • Java中==运算符与equals方法的区别及intern方法详解

    Java中==运算符与equals方法的区别及intern方法详解 1.  ==运算符与equals()方法 2. hashCode()方法的应用 3. intern()方法 /* Come from xixifeng.com Author: 习习风(StellAah) */ public class AboutString2 { public static void main(String[]arsgs) { String myName="xixifeng.com"; String

  • java的equals和==的比较示例

    先看例子: 复制代码 代码如下: package com.amos;/** * @ClassName: EqualTest * @Description:Java中的equal和==的比较 * @author: amosli */public class EqualTest {    public static void main(String[] args) {        int a = 1;        float b = 1.0f;        System.out.println

  • Java多线程编程实现socket通信示例代码

    流传于网络上有关Java多线程通信的编程实例有很多,这一篇还算比较不错,代码可用.下面看看具体内容. TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议.通过TCP协议传输,得到的是一个顺序的无差错的数据流.发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以

  • 详解 Java 中 equals 和 == 的区别

    详解 Java 中 equals 和 == 的区别 1 前言 在 Java 语言中,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型(boolean),但是两者在内部比较的处理中却不尽相同,因此在需要检测两个字符串是否相等的时候,我们一定要特别的注意,选择适当的检测方式,防止造成不必要的 bug.从表面上来看,这种 bug 很像随机产生的间歇性错误. 2 区别 在需要检测两个字符串是否相等的时候,我们可以使用 equals 方法.对于表达式: s.equals(t) 如

  • Java实现Swing组件定制Button示例

    本文实例讲述了Java实现Swing组件定制Button.分享给大家供大家参考,具体如下: 先来看看运行效果图: 具体代码如下: package themedemo; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.RenderingHin

  • Java中filter用法完整代码示例

    本文研究的主要是Java中filter过滤器的相关用法,具体实现代码如下. filter过滤器主要使用于前台向后台传递数据是的过滤操作.程度很简单就不说明了,直接给几个已经写好的代码: 一.使浏览器不缓存页面的过滤器 import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 用于的使 Browser 不缓存页面的过滤器 */ public cla

  • java poi导出图片到excel示例代码

    本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下 代码实现 Controller /** * 导出志愿者/人才数据 * @param talent_type * @return */ @RequestMapping("/exportData") public void exportData(Integer talent_type, HttpServletResponse response) { String fileId = UUID.ra

  • Java使用Collections.sort()排序的示例详解

    Java中Collections.sort()排序详解,通过实例代码给大家讲解,具体代码如下所示: public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("beijing"); list.add("shanghai"); list.add("hangzhou"); Collections.

  • Java 实现模拟用户登录的示例代码

    创建一个用户类类型的集合,手动输入用户库 主要是判定输入的用户名和密码是否与库中的匹配 做好区别是用户名输入错误还是密码输入错误的提示. 定义用户类 public class User{ String username; String keyword; public User(String username, String keyword) { this.username = username; this.keyword = keyword; } } 主程序 import java.util.A

  • java 实现DES 加密解密的示例

    package com.cn.peitest; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; /** * @功能说明: <BR> * @创建日期:2016年9月21日<BR> *

  • 3分钟纯 Java 注解搭个管理系统的示例代码

    最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下. 在我刚开始工作接触的项目都还没做前后端分离,经常需要后端来维护页面,有时候觉得自己好像天生不适合干前端,你要是让我研究研究后端的技术,看个中间件源码啊,分析分析什么框架底层原理啊,这都问题不大,偶尔搞一下JS也可以.你要是让我写个css样式,那简直要命了,一点也提不起兴趣,不知道有没有跟我一样的. 今天要介绍的框架直接不用写页面了,话不多说,下边咱们直奔主题 Erupt一个通用后

随机推荐