【Java Cookbook 1】数值的处理
作者:互联网
目录
I. Introduction
对任何程序来说,数据都是最基础的东西。无论你是想做销售系统,或者财务系统,乃至于学校成天要你做的图书管理系统(比如武汉理工),没有数据的支持,都是镜花水月。
Java拥有几种常见的数据类型用来表示整数,浮点数,布尔值以及字符等。注意,Java为了跨平台兼容已经对数据类型的大小做出详细的规定,而不是像C语言那样任由编译器来决定。
更正:boolean官方文档没有明确定义,依赖于JVM具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素。
[来源: JavaGuide/Java基础知识.md at master · Snailclimb/JavaGuide (github.com)]
类型 | 包装器 | 位数 | 内容 | 默认值 |
---|---|---|---|---|
byte | Byte | 8 | 带符号整数 | 0 |
int | Integer | 32 | 带符号整数 | 0 |
short | Short | 16 | 带符号整数 | 0 |
long | Long | 64 | 带符号整数 | 0L |
float | Float | 32 | IEEE-754 浮点数 | 0f |
double | Double | 64 | IEEE-754 浮点数 | 0d |
char | Char | 16 | 无符号整数 | 'u0000' |
boolean | Boolean | 1 | 布尔值 | false |
II. Content
Trick 1. 检查字符串是否可以有效地转化为数字
你需要确定字符串 s 是否可以转化为数字 x,如果可以,进行转化。
解决方法:
用上正确的包装类以及异常处理机制。
代码:
public static void main(String[] argv) {
String aNumber = argv[0]; // not argv[1]
double result;
try {
result = Double.parseDouble(aNumber);
System.out.println("Number is " + result);
} catch (NumberFormatException exc) {
System.out.println("Invalid number " + aNumber);
return;
}
}
补充:
如果你的数字类型比较特殊,可以用正则表达式解决。
Trick 2. 将一个较大的数据类型存储在较小的类型中
你希望将一个 long 的数据存储在 short 或者 int 。
解决方法:
强制类型转化。
代码:
long old_one = 150;
short new_one = (short) old_one;
补充:
// 错误写法
float f = 3.0;
// 等价于
double tmp = 3.0;
float f = tmp;
// 正确写法
float f = 3.0f; // or just 3f
double f = 3.0;
float f = (float)3.0;
float f = 3;
// int 转化为short, char, byte也会有这种错误。
Trick 3. 确保浮点数运算的准确性
浮动数的运算其实是有一定误差的,这里有一个很经典的例子
double x1=1.0-0.9;
double x2=0.9-0.8;
System.out.println(x1==x2); // false
标签:Java,带符号,double,float,数据类型,数值,Trick,3.0,Cookbook 来源: https://blog.csdn.net/qq_43272626/article/details/117638200