• 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;
    }
  • 相关阅读:
    Docker底层技术了解(3)
    Docker整体结构了解(2)
    Docker简介(1)
    linux常用命令
    python反射
    flask线程隔离技术
    flask核心机制
    并发编程
    socket通信
    网络编程
  • 原文地址:https://www.cnblogs.com/baby123/p/12448675.html
Copyright © 2020-2023  润新知