JDK源码
文章平均质量分 56
JDK源码学习
二木成林
这个作者很懒,什么都没留下…
展开
-
JDK源码之Integer类—formatUnsignedInt()方法
前言将十进制整数转换成其他进制的方法是:整数转换为r进制数时,采用除r取余方法,即将十进制整数不断除以r取余数,直到商为0,所得的余数按逆序排列。图解:用Java简单来实现这个代码:public class Test { public static void main(String[] args) { System.out.println(Integer.toString(123456, 16));// 1e240 System.out.pr原创 2021-06-07 16:17:18 · 470 阅读 · 3 评论 -
JDK源码之Integer类—toUnsignedString0()方法
toUnsignedString0()方法的功能将整数转换成无符号数字字符串返回。该方法的核心其实是formatUnsignedInt()方法的调用,formatUnsignedInt()方法将val转换成二进制或八进制或十六进制后的数填充到buf字符数组中,而formatUnsignedInt()方法就是将该字符数组转换成字符串,这才是它的核心功能。toUnsignedString0()方法的源码如下: /** * Convert the integer to an unsign原创 2021-06-07 15:56:45 · 992 阅读 · 0 评论 -
JDK源码之Integer类—toString()方法
前言在解释toString()方法之前,我们先来了解下如何将十进制整数转换成其他进制。将十进制整数转换成其他进制的方法是:整数转换为r进制数时,采用除r取余方法,即将十进制整数不断除以r取余数,直到商为0,所得的余数按逆序排列。图解:用Java简单来实现这个代码:public class Test { public static void main(String[] args) { System.out.println(Integer.toString(1原创 2021-05-30 23:31:06 · 2042 阅读 · 2 评论 -
JDK源码之Integer类—signum()方法
sginum()方法的功能是确定输入的数的符号,如果输入的是正数则返回1,如果输入的是零则返回0,如果输入的是负数则返回-1。例如:public class Test { public static void main(String[] args) { System.out.println(Integer.signum(18));// 1 System.out.println(Integer.signum(0));// 0 System.o原创 2021-05-30 17:07:52 · 288 阅读 · 0 评论 -
JDK源码之Integer类—highestOneBit()方法和lowestOneBit()方法
highestOneBit()方法highestOneBit()方法的功能是获取数字的二进制中最高位1所对应的权值。例如987654321的二进制是0011 1010 1101 1110 0110 1000 1011 0001,从右往左数最后一个"1"的位置是第30位,返回的十进制值就是2^(30-1),对应的二进制值也就是0010 0000 0000 0000 0000 0000 0000 0000。该方法的源码及注释如下: /** * 如果是负数, 则返回 -214原创 2021-05-30 16:14:44 · 456 阅读 · 0 评论 -
JDK源码之拓展——位运算符>>>、>>和<<
总览位运算符 说明 处理 << 左移位运算符 向左移动指定位数,低位补0,不分正负数 >> 右移位运算符 如果是正数,符号位不变,高位补0;如果是负数,符号位不变,高位补1 >>> 无符号右移运算符 向右移动指定位数,高位补0,不分正负数 注意:无论是正数的移动还是负数的移动都是根据补码来进行移动的,最后返回的整数是将二进制补码转换成原码再换成十进制。左移位运算符<<左移位运算符原创 2021-05-29 23:08:10 · 412 阅读 · 0 评论 -
JDK源码之Integer类—reverse()方法
reverse()方法的功能是将一个int类型数值的所有二进制位反转,然后返回反转后的int数值。例如数字987654321的二进制是0011 1010 1101 1110 0110 1000 1011 0001,反转二进制位后是1000 1101 0001 0110 0111 1011 0101 1100。简单的来说所谓的反转就是:如字符串"ABCD",反转后的字符串是"DCBA",而该方法就是反转二进制位。该方法的源代码如下: /** * 返回通过反转指定int值的二进原创 2021-05-29 18:20:28 · 814 阅读 · 0 评论 -
JDK源码之Integer类—reverseBytes()方法
reverseBytes()方法的功能是将一个int类型的整数的二进制位按照字节(1个字节等于8位)进行反转。比如3的二进制位是00000000 00000000 00000000 00000011,经过该方法转换后的数的二进制位是00000011 00000000 00000000 00000000。所谓的反转如下图所示:该方法的源码及注释如下: /** * 返回通过反转指定的int值的二进制补码表示形式获得的值。 * 比如3的二进制位是00000000 0原创 2021-05-29 16:40:21 · 730 阅读 · 0 评论 -
JDK源码之Integer类—bitCount()方法
bitCount()方法的功能是计算一个int类型数值的二进制补码中"1"的出现个数。例如整数987654321的二进制是0011 1010 1101 1110 0110 1000 1011 0001,其中1出现的次数为17。该方法的源码如下: /** * 返回指定int值的二进制补码二进制表示形式中的一位数 * 即统计指定int值的二进制补码中1的出现次数 * 例如整数987654321的二进制是0011 1010 1101 1110 0110 1000原创 2021-05-29 00:22:04 · 669 阅读 · 1 评论 -
JDK源码之Integer类——rotateRight()方法
rotateRight()方法的功能就是将传入的整数按照二进制位循环右移指定位数。如图:该方法的源码如下: /** * Returns the value obtained by rotating the two's complement binary * representation of the specified {@code int} value right by the * specified number of bits. (Bits sh原创 2021-05-28 15:29:26 · 396 阅读 · 0 评论 -
JDK源码之Integer类——rotateLeft()方法
rotateLeft()方法的功能是通过将指定int值的二进制补码二进制数左移指定位数获得的值。所谓的左移如下图所示:该方法的源码如下: /** * Returns the value obtained by rotating the two's complement binary * representation of the specified {@code int} value left by the * specified number of b原创 2021-05-28 14:47:05 · 644 阅读 · 0 评论 -
JDK源码之Integer类——numberOfTrailingZeros()方法
方法功能:获取指定整数转换成二进制后的尾随零的个数。比如数字8的二进制是0000 0000 0000 0000 0000 0000 0000 1000,那么可以得到它的尾随0有3位,最后三位是000。该方法的源码如下: /** * Returns the number of zero bits following the lowest-order ("rightmost") * one-bit in the two's complement binary repr原创 2021-05-27 23:06:20 · 516 阅读 · 0 评论 -
JDK源码之Integer类——numberOfLeadingZeros()方法
方法功能:获取指定整数转换成二进制后的前导零的个数。比如数字3的二进制是0000 0000 0000 0000 0000 0000 0000 0011,那么可以得到它的前置0有30位,最后两位是11。该方法的源码如下: /** * Returns the number of zero bits preceding the highest-order * ("leftmost") one-bit in the two's complement binary repres原创 2021-05-27 22:05:25 · 411 阅读 · 0 评论 -
JDK源码之Integer类——stringSize()方法
注意,我所使用的JDK版本是1.8,但我发现1.9版本的这个stringSize()方法和1.8版本的stringSize()方法的源码不一样。1.8版本的stringSize()方法源码及中文注释如下: final static int[] sizeTable = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE}; /** * 统计原创 2021-05-26 00:12:29 · 779 阅读 · 0 评论 -
JDK源码之拓展——如何求一个整数的位数
本题是引申自:JDK源码之Integer类——stringSize()方法如何求一个整数的位数第一种:使用sizeTable数组public class Test { final static int[] sizeTable = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE}; /** * 统计传入整数的数字位数,比如123是原创 2021-05-26 00:12:54 · 787 阅读 · 0 评论