目录
I. Introduction
II. Content
Trick 1. 检查字符串是否可以有效地转化为数字
Trick 2. 将一个较大的数据类型存储在较小的类型中
对任何程序来说,数据都是最基础的东西。无论你是想做销售系统,或者财务系统,乃至于学校成天要你做的图书管理系统(比如武汉理工),没有数据的支持,都是镜花水月。
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 |
你需要确定字符串 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; } }
补充:
如果你的数字类型比较特殊,可以用正则表达式解决。
你希望将一个 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也会有这种错误。
浮动数的运算其实是有一定误差的,这里有一个很经典的例子
double x1=1.0-0.9; double x2=0.9-0.8; System.out.println(x1==x2); // false