zoukankan      html  css  js  c++  java
  • Groovy In Action 笔记 (2) -- '=='与‘equals’

    聊聊Groovy中的 '==' 与 'equals'

    先看看Java中它们的区别

    • '=='
      • 对于值类型,则比较值
      • 对于引用类型,则比较两个变量是否指向的为相同内存地址
    • 'equals'
      • 如果类没有override此方法,则比较两个变量是否指向的为相同内存地址
      • 如果有override此方法,则使用子类实现的逻辑进行比较,如String类。
    • 如下代码
      • /*
         * This Java source file was generated by the Gradle 'init' task.
         */
        package practices;
        
        public class App {
            public static void main(String[] args) {
                String str1 = "Hello";
                String str2 = "Hello";
                String str3 = new String("Hello");
        
                System.out.println(str1 == str2) ;// true,此处由于String字面量有缓存
        
                System.out.println(str1 == str3) ;// false
        
                System.out.println(str1.equals(str2)) ;// true
        
                System.out.println(str1.equals(str3)) ;// true
        
            }
        }

    再看看Groovy中的表现:

    • =='
      • 对于值类型,则比较值
      • 对于引用类型,则比较两个变量是否指向的为相同内存地址 -- 注意String 类型有例外,String类override了==操作符,实现了内容比较
    • 'equals'
      • 如果类没有override此方法,则比较两个变量是否指向的为相同内存地址
      • 如果有override此方法,则使用子类实现的逻辑进行比较,如String类。
    • 如下代码
      • def str1 = "hello"
        def str2 = "hello"
        def str3 = new String("hello")
        
        println(str1 == str2) // true
        
        println(str1 == str3) // true
        
        println(str1.equals(str2)) // true
        
        println(str1.equals(str3)) // true

    ps:

      Groovy与Java中instanceof 操作为true的前提:两个类由相同的classloader加载。如果使用不同的加载器,即使加载相同的代码文件,两个类的实例分别与对方类进行 instanceof操作,结果均为false.

  • 相关阅读:
    240 Search a 2D Matrix II 搜索二维矩阵 II
    239 Sliding Window Maximum 滑动窗口最大值
    bzoj5029: 贴小广告&&bzoj5168: [HAOI2014]贴海报
    bzoj5178: [Jsoi2011]棒棒糖
    bzoj5293: [Bjoi2018]求和
    bzoj5194: [Usaco2018 Feb]Snow Boots
    bzoj2007: [Noi2010]海拔
    bzoj4956: [Wf2017]Secret Chamber at Mount Rushmore
    bzoj3296: [USACO2011 Open] Learning Languages
    bzoj4887: [Tjoi2017]可乐
  • 原文地址:https://www.cnblogs.com/FsharpZack/p/13778678.html
Copyright © 2011-2022 走看看