基本数据类型
整型:byte short int long
浮点型:float double
字符型:char
布尔型:boolean
类型 | 字节长度 | 取值范围 |
byte | 1 | -128~127 |
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
long | 8 | -9223372036854775808 ~ 9223372036854775807 |
float | 4 | 大约士3.40282347E+38F(6~7位有效数字) |
double | 8 | 大约士1.797 693134862 315 70E+308(15位有效数字) |
byte类型
计算机为什么用补码形式存储?
1.原码只能进行加法运算,不能进行减法运算,因此出现了反码
2.反码进行运算时,会产生+-0的情况,为了解决这种情况,出现了补码
为什么byte类型127+1=-128?
java里加减法默认是int型,127+1=128
但用补码表示01111111+00000001=10000000是-128
浮点类型精度丢失问题
例如
public class Test {
public static void main(String[] args) {
System.out.println(1.2 - 1);
}
}
输出结果
0.19999999999999996
这是因为计算机是以二进制进行存储的,部分小数二进制无法精确,导致结果与预期不符。
如何解决?
public static void main(String[] args) {
BigDecimal b1 = new BigDecimal(Float.toString(1.2f));
BigDecimal b2 = new BigDecimal(Float.toString(1));
float s = b1.subtract(b2).floatValue();
System.out.println("s----" + s);
}
char类型
1.字符类型实际上是一个16位无符号整数,这个数对应字符的编码
2.java字符类型采用Unicode字符集编码。Unicode是世界通用的定字长字符集,所用字符都是16位
3.任何一个字符都可以转化为一个整数,整数的范围是0-65535
boolean类型
boolean(布尔)类型有两个值:flase和true,用来判断逻辑条件。
转义字符
\n 表示回车
\r 表示换行符
\\ 表示反斜杠( \ )
\' 表示单引号( ' )
\" 表示双引号( " )