程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JDK源码笔记02 Long大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

something before start

写到第二篇了:D 有很多类似的方法就不重复描述了,稍微带过。主要讲讲和Integer差别比较大的方法 另外这里我写的方法概览里不一定有所有的方法,因为有的我懒得写下来或者觉得没必要。所以这个博客其实不是使用说明书而是源码阅读说明:D

Integer区别

一些常量有区别,Long是64位,所以他的min_value max_value相应变长了 一些方法如toString getChars parseLong valueOf decode getLong以及一些位处理方法,和Integer的差别只在于位数变长了 同时缓存基本上完全一样

方法以及子类概览

方法以及简单说明

输出字符串

toUnsignedString(long i, int radiX) 
//二倍数进制调用toUnsignedString0(long val, int shift)
//十进制 先右移1位然后除以5(逻辑上除以10,不过这样不会影响符号位),把除了个位的部分转换成字符串,然后在最后拼接个位数。 不这么做的话也可以通过转换成BigInteger,但是性能会差点。
//否则调用toUnsignedBigInteger(i).toString(radiX);

toUnsignedString0(long val, int shift)
//类似于Ingeter 采用位运算来进行短除法,结果逐位放在byte[]数组中,最后返回字符串

BigInteger相关

private static toUnsignedBigInteger(long i) 
//位运算取出高32位和低32位,再通过BigInteger合并高低位

fastuUID

Long类里提供了UUID的toString方法,即fastuUID(long lsb, long msb),具体可以参这篇博客

运算

divideUnsigned(long dividend, long divisor)
//divisor<0 则只需要比无符号长整形数值大小 返回0或1
//dividend>0 直接除
//否则先转换成BigInteger再进行运算

杂七杂八

哈希

 public static int hashCode(long value) {
        return (int)(value ^ (value >>> 32));
    }

方法详解

解析字符串

parseUnsignedLong

签名public static long parseUnsignedLong(String s, int radiX) throws numberFormatException 功能:将无符号长整数字符串转换成long 说明相关方法

parseUnsignedLong(CharSequence s, int beginIndex, int endIndex, int radiX)
parseUnsignedLong(String s)

主要代码说明

//参数校验

//判断,如果是能确保不会是负数的话调用parseLong(String s, int radiX) 
//len <= 12 || // 最大值在最大的进制下是13位,所以小于等于12位可以不虑符号
//(radix == 10 && len <= 18)) { //十进制最多19位,18位及以下不需要虑符合

//先计算len-1长度的大小 作为first
long first = parseLong(s, 0, len - 1, radiX);
//取出最后一位的大小 作为second
//Character.digit()的功能是取出符号对应的数字的值
int second = Character.digit(s.charAt(len - 1), radiX);
//判断second是否大于0,小于等于0则抛出异常
long result = first * radix + second;

//判断result是否溢出了 源码里还写了证明,数字问题我有点懒得看:C
//没问题则返回result

总结

就和Integer差不多,不过看这个的时候顺带看了一眼BigInteger,这个有意思多了 噗嗤

大佬总结

以上是大佬教程为你收集整理的JDK源码笔记02 Long全部内容,希望文章能够帮你解决JDK源码笔记02 Long所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。