zoukankan      html  css  js  c++  java
  • 浅谈Java中的equals和==

     先上代码:public class Main {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            int n=3;
            int m=3;
            
            System.out.println(n==m);
            
            String str = new String("hello");
            String str1 = new String("hello");
            String str2 = new String("hello");
            
            System.out.println(str1==str2);
            
            str1 = str;
            str2 = str;
            System.out.println(str1==str2);
        }
    }
    输出结果为 true false true
    要理解这个其实只需要理解基本数据类型变量和非基本数据类型变量的区别:
    对于这8种基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符==来进行比较时,比较的就是 “值” 本身。
    而对于非基本数据类型的变量,在一些书籍中称作为 引用类型的变量。比如上面的str1就是引用类型的变量,引用类型的变量存储的并不是 “值”本身,而是于其关联的对象在内存中的地址。

    总结来说:

      1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

        如果作用于引用类型的变量,则比较的是所指向的对象的地址

      2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量

        如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

     
  • 相关阅读:
    前向传播与反向传播
    卷积运算
    使用GUI工具Portainer.io管控Docker容器
    NextCloud: 打造自己的网盘
    金融危机和经济危机有什么不同
    【转载】Windows环境的Workflow神器:AutoHotkey
    Lua常用模块
    Lua基本语法
    区分 IaaS、SaaS 和 PaaS
    【笔记】流畅的Python
  • 原文地址:https://www.cnblogs.com/yyy-blog/p/6950382.html
Copyright © 2011-2022 走看看