==

  • 先看Java
/**
 * Author:Mr.X
 * Date:2017/10/8 23:17
 * Description:
 *
 * @==判断两个内存地址是否相同
 * @基础类型有(char,byte,short,short,int,long,float,double,boolean)
 * @基础类型包装类有(Char,Byte,Short...)
 *
 * @值相同的情况下:
 * @结论1:基础类型==基础类型都为true----------------------------------->值比较
 * @结论2:基础类型==基础类型包装类都为true------------------------------>值比较,一般都不会同时写(int,Integer)两种类型
 * @结论3:基础类型包装类==基础类型包装类
 * @Byte,Short,Integer,Long(-127~128之间true,超过这个范围为false)----->引用比较,但有缓存机制
 * @Float,Double等都为false------------------------------------------>引用比较
 */
public class Test {

    public static void main(String[] args) {
        int a = 1;

        int b = 1;
        System.out.println(a == b); //true

        float c = 1;
        System.out.println(a == c); //true

        double d = 1;
        System.out.println(a == d); //true

        Integer e = 1;
        System.out.println(a == e); //true

        /**
         * Byte,Short,Integer,Long缓存范围(-127~128)
         * System.out.println(Byte.MAX_VALUE);
         * System.out.println(Byte.MIN_VALUE);
         */
        Integer f = 10;
        Integer g = 10;
        System.out.println(f == g); //true

        Integer h = 300;
        Integer i = 300;
        System.out.println(h == i); //false

        Float j = 10f;
        Float k = 10f;
        System.out.println(j == k);   //false
    }
}
  • 对比看看js
<script type="text/javascript">
    var a = 10;
    var b = "10";
    console.log(a == b);    //true
    console.log(a === b);   //false ===表示(a==b && typeof(a)==typeof(b))
    console.log(typeof(a)); //number
    console.log(typeof(b)); //string
</script>

equals

Integer a = 10;
Integer b = 10;
System.out.println(a.equals(b));    //true

Float c = 10f;
System.out.println(a.equals(c));    //false
true
false
equals在同一数据类型时,值相等则相等,否则为false,上例中a和c数据类型不同,所以为false

if (!a.equals("") && a != null) 和 if (a != null && !a.equals(""))的选择

// 这样写才是对的,自己思考为什么
if (a != null && !a.equals("")) {
}

谈谈==和equals的更多相关文章

  1. [转]谈谈Java中"=="与"equals()"

    equals是Object超类中的一个方法,这个方法的实现就是通过==号实现的,==号比较的是两个对象的地址是否相同,在代码中体现出来就是比较两个对象引用中保存的地址是否相同,==能够判断的只是两个对 ...

  2. 谈谈hashcode和equals的用法

    HASH: Hash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值.关于散列值,有以下几个关键结论: 1.如果散列表中存在和散列原始输入K相等的记录,那么K必定 ...

  3. 谈谈HashSet的存储原理及为什么重写equals必须重写hashcode方法

    HashSet的存储原理: 1.将要传入的数据根据系统的hash算法得到一个hash值: 2.根据hash值可以得出该数据在hash表中的位置: 3.判断该位置上是否有值,没有值则把数据插入进来:如果 ...

  4. 谈谈javaSE中的==和equals的联系与区别

    前言 ==和equals是我们面试中经常会碰到的问题.那么它们之间有什么联系和区别呢?今天我们就来聊聊吧! 问题 这里先抛出一些比较典型笔试问题: int x = 10; int y = 10; St ...

  5. java中hashcode()和equals()的详解

    今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36). 1. 首先equals()和hashc ...

  6. Spring系列之谈谈对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IOC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  7. 谈谈Android 6.0运行时权限理解

    前言 谷歌在2015年8月份时候,发布了Android 6.0版本,代号叫做“棉花糖”(Marshmallow ),其中的很大的一部分变化,是在用户权限授权上,或许是感觉之前默认授权的不合理,现在6. ...

  8. 【ASP.net】Equals 和 == 的区别

    在比较Equals 和 ==的区别前.我们先来了解下相关的知识 C#数据类型 1.值类型 值类型有: 值类型包括:简单类型.结构类型.枚举类型:引用类型包括:Object 类型.类类型.接口.代表元. ...

  9. 谈谈Java的集合组件

    让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合 ...

随机推荐

  1. numpy的使用方法

    一.numpy快速入门 1.什么是numpy: numpy是python的一个矩阵类型,提供了大量矩阵处理的函数,非正式来说,就是一个使运算更容易,执行更迅速的库,因为它的内部运算是通过c语言而不是p ...

  2. C语言进阶--Day2

    今天主要讲解的是函数的压栈与出栈 1. 要实现一个数组的逆置,用栈的压栈出栈观点: reverseArr(int *parr,int i,int len) { if(i != len-1) rever ...

  3. 通过$.ajax设置预加载动画加强用户体验

    以前在jquery请求数据时,总喜欢用简洁的$.get与$.post提交数据,但有时发现由于网速的问题,有些时候网站加载js获得的数据会非常慢,于是就想能不能请求数据中间,给加载数据一个提示,增加用户 ...

  4. 利用sys打印进度条

    在很多常见中,需要对当前处理的进度进行显示,这个时候就需要进度条了,在python中,也有封装好的进度条模块,当然,也可以自己编写一个简单的进度条来帮助理解进度条的实现. 首先,需要理解一个概念,就是 ...

  5. 用Jdbc连接数据库后实现增删改查功能

    增删改用的都是executeUpdate()方法: 查用的是executeQuery()方法 package cn.lideng.dbc; import java.lang.management.Ma ...

  6. 图形设计必备软件:CorelDRAW

    [CorelDRAW 激发创意] CorelDRAW Graphics Suite 是一款领先的图形设计软件,收到数百万专业人士.小型企业主以及全球设计爱好者的热捧.它可以提供无缝的图形.版面.插图. ...

  7. Word 测试下发布博客

    目录 语法.    3 NULL,TRUE,FALSE    3 大小端存储    4 类型转换    4 转义字符    5 运算符的优先级    5 表达式(a=b=c)    7 *pa++=* ...

  8. python 面向对象(一)初识面向对象

    ##################################总结#################### 1. 面向过程:一切以事物的发展流程为中心 面向对象:一切以对象为中心,一切皆为对向, ...

  9. Kafka技术内幕 读书笔记之(二) 生产者——新生产者客户端

    消息系统通常由生产者(producer ). 消费者( consumer )和消息代理( broker ) 三大部分组成,生产者会将消息写入消息代理,消费者会从消息代理中读取消息 . 对于消息代理而言 ...

  10. 使用List和Map遇到得空指针异常

    如题,经常遇到同类得问题,因为集合在使用之前必须先new一个对象. private List<Orderdatil> orderdatilList=new ArrayList<Ord ...