Java.lang.Integer类中toString(int i, int radix)的具体实现
Java.lang.Integer.toString(int i,int radix)方法可以实现将一个int类型的10进制的数据转换为指定进制的数据。
api文档中介绍:
返回第二个参数指定的基数中第一个参数的字符串表示形式。
如果基数小于Character.MIN_RADIX(2)或大于Character.MAX_RADIX(36),则改用基数10。
如果第一个参数为负,则结果的第一个元素为前加上一个负号“-”。如果第一个参数不为负,则结果中不会出现负号。
结果的其余字符代表第一个参数的大小。如果大小为零,则用单个零字符'0'表示;否则,表示幅度的第一个字符将不是零字符。
如果基数为N,则按所示顺序将这些字符的前N个用作基数N个数字。因此,十六进制的数字(基数16)为0123456789abcdef。如果需要大写字母,可以在结果上调用String.toUpperCase()方法: Integer.toString(n,16).toUpperCase()
toString(int i,int radix)方法的源码:
public static String toString(int i, int radix) {
/* 最大进制36,最小进制2,见Character类*/
if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
radix = 10; /* Use the faster version */
if (radix == 10) {
return toString(i);
} /*创建一个用于存放转换为指定字符的字符型数组*/
char buf[] = new char[33];
/* 判断传入的数据是正是负*/
boolean negative = (i < 0);
/*传入数据时字符数组中的位置 */
int charPos = 32; /*不管正负,全部转换为负数 */
if (!negative) {
i = -i;
} /* 当传入的数据或者除以进制之后得到的整数大于指定的进制时继续循环 */
while (i <= -radix) {
buf[charPos--] = digits[-(i % radix)];
i = i / radix;
}
/* 将最后一个余数添加到数组中 */
buf[charPos] = digits[-i]; /* 当传入的数据是负数时,需要在前面添加一个负号 */
if (negative) {
buf[--charPos] = '-';
} return new String(buf, charPos, (33 - charPos));
}
Integer类中的digits数组为:
final static char[] digits = {
'0' , '1' , '2' , '3' , '4' , '5' ,
'6' , '7' , '8' , '9' , 'a' , 'b' ,
'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
'o' , 'p' , 'q' , 'r' , 's' , 't' ,
'u' , 'v' , 'w' , 'x' , 'y' , 'z'
};
Character类中的MIN_RADIX和MAX_RADIX两个field为:
public static final int MIN_RADIX = 2; public static final int MAX_RADIX = 36;
Java.lang.Integer类中toString(int i, int radix)的具体实现的更多相关文章
- java.lang.Integer 类(JDK1.7)
1.Integer 和int 的区别 ①.Integer 是 int 包装类,int 是八大基本数据类型之一(byte,char,short,int,long,float,double,boolean ...
- JDK1.8源码(二)——java.lang.Integer 类
上一篇博客我们介绍了 java.lang 包下的 Object 类,那么本篇博客接着介绍该包下的另一个类 Integer.在前面 浅谈 Integer 类 博客中我们主要介绍了 Integer 类 和 ...
- JDK1.8源码(二)——java.lang.Integer类
一.初识 1.介绍 int 是Java八大基本数据类型之一,占据 4 个字节,范围是 -2^31~2^31 - 1,即 -2147483648~2147483647.而 Integer 是 int 包 ...
- java.lang.Class类中的某些方法
反射的代码会经常遇到,Class类中方法真的多,且用的少,大多用在底层源码这块,既然看到了,就记录一下吧,说不定以后厉害了,自己封装框架,haha getComponentType()方法: Syst ...
- Java反射——java.lang.Class 类简介
Java的基本思想之一是万事万物即对象,类也是一种对象.但是类是什么对象呢?Java中的类是java.lang.Class的实例化对象,这被成为类类型. //java.lang.Class类中的的主要 ...
- java.lang.Object类与equals()及toString()的使用
1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性.方法)就具有通用 ...
- java 反射 报错:Attempt to get java.lang.Integer field "..." with illegal data type conversion to int
类: Integer id; 反射时: Field f = User.class.getDeclaredField("id"); f.setAccessible(true); in ...
- JSONObject转换Int类型--java.lang.Integer cannot be cast to java.lang.String
参数 params={"abc":0} JSONObject转换Int类型 JSONObject json = JSONObject.fromObject(params); if ...
- 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法
Integer类中的. 关于parseInt()方法的API文档. 返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...
随机推荐
- Asp.Net Core 使用Monaco Editor 实现代码编辑器
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著 ...
- RESTful测试工具RESTClient
1.简介 RESTClient是一个用于测试RESTful Web服务的客户端, 是用Java Swing编写的基于Http协议的接口测试工具, 它可以向服务器发送各种Http请求,并显示服务器响应. ...
- Ranger-Usersync安装
Ranger-Usersync安装, 配置数据源Unix,Usersync从Unix拉取Users/Groups的数据源, 对应的Ranger版本0.6.0. IP/机器名 安装软件 运行进程 zdh ...
- JDK线程池异常处理方式
1. 抛出异常 execute() java.util.concurrent.ThreadPoolExecutor#runWorker 中抛出,抛出之后经过以下两个步骤: catch块捕获,捕获之后再 ...
- PowerShell 管道符之Where-Object的使用方法
1 Get-Process|Select-Object -Property Name|Where-Object{$_ -match 'QQ'} 可以匹配到QQ为名的结果
- 第10组 Beta冲刺 (4/5)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客: https://www.cnblogs.com/cpandbb/p/14018650.html ·作业博客:https://edu.cnblogs.c ...
- Go语言系列之并发编程
Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(宏观上并行,微观上并发). 并行:同一时刻执行多个任务(宏观和微观都是并行). Go语言的并发通过goroutine实现.gorout ...
- 【从小白到专家】 Istio专题之七:30分钟讲透Istio访问与控制
本文为Istio系列专题之七--Istio访问与控制.Istio通过身份认证.授权.多重安全策略,来保证微服务的安全,实现代码无侵入性.有时我们需要对微服务间的相互访问进行控制,比如满足某些条件的微服 ...
- Flowable实战(四)BPMN2.0 启动与结束事件
一.BPMN2.0 BPMN2.0规范是一个标准,开源框架和不同供应商都遵循这份标准,使得最终用户不会因为依赖专有解决方案,而被供应商"绑架".有了BPMN2.0标准,不同解决 ...
- 《剑指offer》面试题59 - I. 滑动窗口的最大值
问题描述 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值. 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5 ...