java parselong_java中的parseLong()
今天项目中碰到一个parseLong()方法,传入的是一个String类型,得到一个Long,一开始感觉不就是类型转换嘛,后来发现还是有点小坑的。
首先parseLong(String str)它还会去调用一个更深的parseLong(String str, int radix),如果不传入的话,radix默认为10 ,那么这个方法究竟怎么工作的呢?
简单来说,就是将str按照radix的进制来转换,比如默认是10的话,那么parseLong("99", 10)得到的结果就是99 。既然如此,是不是觉得没啥大不了的,那么parseLong("99",8)会得到什么呢?直接将99转换成8进制应该得到143吧,那么就错咯,它会报错NumberFormatException,那么来读一下源码
if (len > 0) {
char firstChar = s.charAt(0);
if (firstChar < '0') { // Possible leading "+" or "-"
if (firstChar == '-') {
negative = true;
limit = Long.MIN_VALUE;
} else if (firstChar != '+')
throw NumberFormatException.forInputString(s);
if (len == 1) // Cannot have lone "+" or "-"
throw NumberFormatException.forInputString(s);
i++;
}
multmin = limit / radix;
while (i < len) {
// Accumulating negatively avoids surprises near MAX_VALUE
digit = Character.digit(s.charAt(i++),radix);
if (digit < 0) {
throw NumberFormatException.forInputString(s);
}
if (result < multmin) {
throw NumberFormatException.forInputString(s);
}
result *= radix;
if (result < limit + digit) {
throw NumberFormatException.forInputString(s);
}
result -= digit;
}
}
大概能发现,它是按照从第一位开始,每一位都不能超过这个radix。
java parselong_java中的parseLong()相关推荐
- java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?
java中long parseLong(String s)方法中string(十进制数字)的范围? 來源:互聯網 2009-06-19 05:05:28 評論 分類: 電腦/網絡 >> ...
- JAVA语言异常,Java语言中的异常
1.异常分类 从产生源头来看,Java语言中的异常可以分为两类: JVM抛出的异常.比如:访问null引用会引发NullPointerException:0作为除数,如9/0,JVM会抛出Arithm ...
- 统计java文件中的代码行数
统计Java代码行数工具类 -- CodeCounterUtil.java 统计指定目录下的java文件中代码行数 -- public static int getCodeNumFromFo ...
- Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法
什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...
- Java 8中一些常用的全新的函数式接口
这一篇属于菜鸟级博客,只是介绍了一些在Java 8中新出现的一些很有用的接口,通过一些简单的例子加以说明,没有深入地阐述. 函数式接口 什么是函数式接口? 函数式接口,@FunctionalInter ...
- 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...
- 聊一聊Java 泛型中的通配符 T,E,K,V,?
点击上方"方志朋",选择"设为星标" 回复"1024"获取独家整理的学习资料 作者:glmapper juejin.im/post/5d57 ...
- Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
最新文章
- 私房库视频学习笔记-小清新BBS系统开发技术归纳
- php分区表,分区表的基本操作
- praying,blessing,wishing
- 5.3linux下C语言socket网络编程简例
- php curl cookie 读写
- BlockChain:区块链入门课程 -- 区块链应用于能源 POWER LEDGER案例
- vscode remote免密登录
- 多臂老虎机导论(一)引言
- FRR的ATOMIC 利用GCC的实现
- 分值展示时,只显示评委分数,但不显示评委名称或评委编号等标识,如何进行前期准备操作?
- mac安装mysql devel_Mac安装Mysql
- prince2 成功的项目管理_我的PRINCE2故事
- python的jira库操作
- np和tensor转换
- 鸿蒙系统学习笔记(一) 鸿蒙系统介绍
- Excel自定义格式参数
- mysql 5.7的my.ini的位置在隐藏文件夹“ProgramData”下面
- C语言编码转换----负数的二进制表示方法
- 自动提取论文公式方法
- use ida6.8 + windbg on win10