String类型转Long类型

String类型转Long类型开发中有遇到 Long 类型比较是否相等 比如 LongA 和 LongB 判断是否相等 当时习惯性的直接 A B nbsp nbsp 自测的话确实么有问题 但是测试那边测试就有问题 当时郁闷了一下然后换成了 A equals B 或 A longValue B longValue 都是正确的 nbsp nbsp 改完 bug 觉得需要看看是为什么 通过看 Long class 可以看出 nbsp nbsp 如果值在 128 127 之间

开发中有遇到Long类型比较是否相等,比如Long A和Long B判断是否相等,当时习惯性的直接A==B;

    自测的话确实么有问题,但是测试那边测试就有问题,当时郁闷了一下然后换成了A.equals(B)或A.longValue()==B.longValue()都是正确的;

    改完bug,觉得需要看看是为什么,通过看Long.class,可以看出

String类型转Long类型String类型转Long类型

    如果值在[-128, 127]之间,会放在缓存里面,而超过这个范围就要new一个新的对象,也就是说==不能判断对象是否相等。自测的话A或者B值设置的都比较小,而测试会考虑多方便的效果,所以就GG了。

在判断两个Long型数据是否相等的时候遇到了一个问题。

使用“==”的疑问

if (user.getId() == admin.getId()) { return true; } else { return false; }
Long id1 = 123L; Long id2 = 123L; System.out.println(id1 == id2); 输出: true

同是Long型,同是==,为什么结果不一样呢?
看看源代码:

private static class LongCache { private LongCache(){} static final Long cache[] = new Long[-(-128) + 127 + 1]; static { for(int i = 0; i < cache.length; i++) cache[i] = new Long(i - 128); } }
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); }

使用equals

Long重写了equals方法,如下:

public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }

它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。



注意:

1、首先,字符串内不能包含除数字之外的字符

原因是Long类型的最大值位Long.MAX_VALUE = ,大于这个值都会出错

Long类型的最小值位Long.MIN_VALUE=-,小于这个值也会报错



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233698.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月28日 下午4:01
下一篇 2025年6月28日 下午4:22


相关推荐

  • android计算器开发实例_安卓开发计算器代码

    android计算器开发实例_安卓开发计算器代码实习第四天了,第一天熟悉了一下java,这三天学习了解了一下安卓开发的一些基础知识。做了一个小程序—计算器,以此帖来记录一下。也许也有人可以参考一下)功能真的只有最基本哈哈,最最新手的人可以参考hh首先是activity_main.xml的布局代码<GridLayoutxmlns:android=”http://schemas.android.com/apk/res/android”xmlns:tools=”http://schemas.android.com/tools”a

    2025年6月7日
    1
  • linux下查看tomcat宕机并自动重启[通俗易懂]

    linux下查看tomcat宕机并自动重启[通俗易懂]1.在服务器上创建tomcatMonitor.sh2.使文件生效chmodu+x*.sh3.编辑tomcatMonitor.sh文件,if及fi必须成对出现,如果ifthen写在一行需要用;隔开#!/bin/sh#获取tomcat的PIDTOMCAT_PID=$(ps-ef|greptomcat|grep-v’grep’|awk'{print$2}’)#tomcat的启动文件位置START_TOMCAT=/usr/local/tomcat6/bin/start

    2022年7月23日
    11
  • 交易真的能稳定盈利吗_如何在股市稳定盈利

    交易真的能稳定盈利吗_如何在股市稳定盈利作为一个已经稳定盈利的人,我来解答下吧。我主要做外汇,期货和期权,A股也做,但是中国的股票你们知道的,做空的限制太多,融券融不到,股指期货还限制开仓和提高杠杆率。所以要等一个轮回需要5年以上,所以股票等待建仓机会比较漫长。从交易者的层面来看,我一般把他们分为这么几类人:一,幼儿园阶段:无知者无畏这种人没做过交易,只是从朋友那里听说,交易能赚大钱,或者是书刊杂志上读了一些交易大师的成功学传记,然后就跟打了鸡血似的,觉得自己也能和他们一样在金融市场赚到很多钱,这些人没有风控意识,甚至感觉这个市场

    2022年10月4日
    4
  • yuicompressor java_YUI Compressor[通俗易懂]

    yuicompressor java_YUI Compressor[通俗易懂]简介根据雅虎卓越性能团队的说法,40%到60%的雅虎用户拥有空闲缓存体验,所有页面浏览量中约有20%是使用空缓存完成的(请参阅TenniTheurer在YUIBlog上的这篇文章)有关浏览器缓存使用的更多信息)。这一事实概述了保持网页尽可能轻量化的重要性。改进页面或Web应用程序的工程设计通常会带来最大的节省,而且应始终是主要策略。通过正确的设计,有许多提高性能的辅助策略,例如缩小代码,HTTP…

    2022年7月18日
    15
  • java中Bigdecimal加减乘除运算

    java中Bigdecimal加减乘除运算在java中的Bigdecimal类型的数据进行加减乘除运算的时候要调用以下方法:加法:add减法:subtract乘法:multiply除法:divide例如: BigDecimali=newBigDecimal(2);BigDecimalj=newBigDecimal(1);//加法System.out.println(i.add(j));//减法System.out.println(i.subtract(j));

    2022年6月2日
    62
  • vmware15最新激活码可用破解方法

    vmware15最新激活码可用破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号