• java Long的值判断是否相等


    Long的值判断是否相等使用 “==”,遇到问题

    public class Demo {
        public static void main(String[] args) {
            Long m = 1L;
            Long n = 1L;
            if (m == n) {
                System.out.println("m 等于 n");
            } else {
                System.out.println("m 不等于 n");
            }
        }
    }

    输出

      m 等于 n

    public class Demo {
        public static void main(String[] args) {
            Long m = 128L;
            Long n = 128L;
            if (m == n) {
                System.out.println("m 等于 n");
            } else {
                System.out.println("m 不等于 n");
            }
        }
    }

    输出

      m 不等于 n

    原因:

      如果Long的值在[-127,128]之间,用 “==” 判断是否相等是没问题的 

      如果不在[-127,128]之间,则会new一个新对象,就不能用 “==”

    public static Long valueOf(long l) {
            final int offset = 128;
            if (l >= -128 && l <= 127) { // will cache
                return LongCache.cache[(int)l + offset];
            }
            return new Long(l);
    }

    解决的方法

      (1)使用 .longValue()

    public class Demo {
        public static void main(String[] args) {
            Long m = 128L;
            Long n = 128L;
            if (m.longValue() == n.longValue()) {
                System.out.println("m 等于 n");
            } else {
                System.out.println("m 不等于 n");
            }
        }
    }

    输出

      m 等于 n

      (2)使用 .equals()

    public class Demo {
        public static void main(String[] args) {
            Long m = 128L;
            Long n = 128L;
            if (m.equals(n)) {
                System.out.println("m 等于 n");
            } else {
                System.out.println("m 不等于 n");
            }
        }
    }

    输出

      m 等于 n

    补充:

      最佳解决方案为 .eques()

    public boolean equals(Object obj) {
            if (obj instanceof Long) {
                return value == ((Long)obj).longValue();
            }
            return false;
    }
  • 相关阅读:
    Git使用教程与基本原理和Sourcetree基本使用探微
    微博开发笔记上(未完待续)
    Swift入门
    刀哥之指纹识别biometrics
    iOS面试关于http知识点basic-01-http
    SDWebImageInfo
    runloop
    NSOperation类
    java多线程
    java集合类(二)
  • 原文地址:https://www.cnblogs.com/baby123/p/12448675.html
Copyright © 2020-2023  润新知