java中的valueOf与parseXXX有啥区别
以Byte类中的valueOf和parseByte为例
valueOf是转换为Byte封装类型
而parseByte是转换为byte基本数据类型
看一下jdk1.8的部分源码
/**
* Byte类中构造了一个缓存,将-128-127这256个数存放在cache数组中
* 数组下标为0-256
*/
private static class ByteCache {private ByteCache(){}static final Byte cache[] = new Byte[-(-128) + 127 + 1];static {for(int i = 0; i < cache.length; i++)cache[i] = new Byte((byte)(i - 128));}
}/**
* 第一个是将基本类型转换成封装类,返回的是cache中的数据
*/
public static Byte valueOf(byte b) {final int offset = 128;return ByteCache.cache[(int)b + offset];
}/**
* valueOf(String)的本质是调用了parseByte方法
* radix表示参数s识别为什么进制的数据
*/
public static Byte valueOf(String s, int radix)throws NumberFormatException {return valueOf(parseByte(s, radix));
}/**
* 默认10进制
*/
public static Byte valueOf(String s) throws NumberFormatException {return valueOf(s, 10);
}/**
* parseByte返回的是byte基本数据类型的值
*/public static byte parseByte(String s, int radix)throws NumberFormatException {int i = Integer.parseInt(s, radix);if (i < MIN_VALUE || i > MAX_VALUE)throw new NumberFormatException("Value out of range. Value:\"" + s + "\" Radix:" + radix);return (byte)i;
}
radix参数怎么用呢?其实parseByte/valueOf还可以将其他进制的数转换成10进制
比方说valueOf("0011", 2)就表示将二进制的0011转换成10进制的3
parseByte("0011", 2)也是同理
java中的valueOf与parseXXX有啥区别相关推荐
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- Java中print、printf、println的区别 详解
Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...
- Java中方法重载和方法重写的区别
文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...
- Java中的LongAdder和AtomicLong有什么区别?
● Java中的LongAdder和AtomicLong有什么区别? 考点:JDK 参考回答: JDK1.8引入了LongAdder类.CAS机制就是,在一个死循环内,不断尝试修改目标值,直到修改成功 ...
- Java中 byte[]数组序列化和fastjson序列化区别
Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...
- JAVA中的方法和构造方法有什么区别
JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...
- 转 Java中final、finally、finalize的区别与用法
Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...
- 分析Java中的三种不同变量的区别
1.首先分析Java中的三种不同变量的区别,如下表所示 概念 默认值 其他 类变量 也叫静态变量,是类中独立于方法之外的变量 用static 修饰 有默认初始值,系统自动初始化. 如boolean ...
最新文章
- python之itemgetter函数:对字典列表进行多键排序
- 午夜十分之凌晨三点半
- 2021牛客OI赛前集训营-提高组(第五场)D-牛牛的border【SAM】
- node.js android 聊天,Node.js实现简单聊天服务器
- 令人惊讶的手机端实时 4K 风格迁移!谷歌又出牛文
- java 中的事物怎么配置_java – 在hibernate中如何以编程方式设置事务的隔离级别,或者如何创建具有不同隔离级别的两个事务...
- dsu on tree入门
- pyqt5 显示更新进度条_python如何通过pyqt5实现进度条
- IB心理学生物分析模块
- android studio代码格式化设置,Android studio kotlin代码格式化操作
- 九。温暖地待人,你才会得到意想不到的惊喜结果。
- 大数据开发都需要掌握哪些编程语言
- MacBook上有哪些适合运营人用的高效的软件工具和使用技巧
- Pdf文档在线编辑控件源码及演示
- cesium 鼠标操作习惯修改 鼠标左键旋转 鼠标右键平移
- 华为相册的神仙功能,真的超好用!
- vs code 离线安装 CodeLLDB 包
- MySQL数据库集群实战(1)——MySQL数据库基础知识
- VBA Trim()函数 去除头部和尾部的空格 - VBA函数学习笔记(二)
- 软件测试面试题汇集(2)
热门文章
- html的dom是什么意思,DOM是什么意思
- response.expires = -1是什么意思
- BUG记录-Halcon error 2042 Feature has expired
- 【OpenCV3】Ubuntu16.04/18.04下安装最新版OpenCV3.4.13
- Understanding Flash Player with Adobe Scout
- matlab 绘制椭圆锥波束指向示意图
- openpnp - configure - 矫正里程碑
- CSS hover 改变其他元素状态
- HP 6531s系列笔记本开启硬件虚拟化技术(Intel VT)的方法
- 不知不觉又到了万(wu)众(liao)期(tou)待(ding)的十一黄金周了