Java数据类型
- 基本数据类型:
1.1 整数数据类型
byte 1字节(byte)
short 2字节
int 4字节
long 8字节
1.2 浮点数据类型
float 4字节
double 8字节
1.3 字符数据类型
char 2字节
1.4 布尔数据类型
boolean 1位(bit) (只有两个值: true,false)
对字节,位的说明:
1B (字节) = 8bit (位) (8位二进制数: 11001100)
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
- 引用数据类型
如:String,类,接口,ArrayList 等
扩展:
- 对于浮点数进行比较不要使用float,使用Java的BigDecimal
原因:
- 整数:
进制 :二进制 0b 十进制 八进制0 十六进制0x 0指数字零
3. 内存溢出
public class Test {
public static void main(String[] args) {
int i = 128 ;
byte b = (byte)i; //内存溢出 -128
//强制类型转换 类型 高 --> 低
//自动类型转换 低 --> 高 byte,char,short -> int -> long -> float -> double
System.out.println(i);
System.out.println(b);
/*
注意:
1.不能对布尔值进行转换
2.不能把对象类型转换位不相干的类型
3.在把高容量转换为低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println("====================");
System.out.println((int)23.7);
System.out.println((int) -45.89f);
//操作比较大的时侯,注意溢出问题 JDK7的新特性,数字之间可以用下划线分割
System.out.println("====================");
int money = 10_0000_0000;
int year = 30;
int total = money * year; //-64771072,计算的时候溢出了
System.out.println(money);
System.out.println(total);
long total2 = money * year; //默认是int , 转换之前已经存在问题了
System.out.println(total2);
long total3 = money * ((long)year); //先把一个数转换为long
System.out.println(total3);
}
}
结果:
128
-128
====================
23
-45
====================
1000000000
-64771072
-64771072
30000000000