zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    北京清北 综合强化班 Day1
    Noip2015 提高组 Day1
    Noip2016 提高组 Day2 T1 组合数问题
    2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
    [51NOD1103] N的倍数(鸽笼原理)
    [51NOD1420] 数袋鼠好有趣(贪心)
    [CF808A] Lucky Year(规律)
    [CF808B] Average Sleep Time([强行]树状数组,数学)
    [CF808C] Tea Party(贪心)
    [CF808D] Array Division(暴力,枚举)
  • 原文地址:https://www.cnblogs.com/baby123/p/12448675.html
Copyright © 2011-2022 走看看