一、数据类型
数据类型 | 字节数 | |
---|---|---|
byte | 字节型 | 占用1个字节 取值范围:-27 ~ +27-1 -128~+127 |
short | 短整型 | 占用2个字节 取值范围:-215 ~ +215-1 -32768~+32767,在实际开发中使用较少 |
int | 整型 | 占用4个字节 取值范围:-231 ~ +231-1 -2147483648-+2147483647 |
long | 长整型 | 占用8个字节 取值范围:-263 ~ +263-1 -9223372036854775808 ~ +9223372036854775807 |
float | 单精度浮点型 | 占用4个字节 取值范围:-3.4E-38 ~ +3.4E+38 |
double | 双精度浮点型 | 占用8个字节 负值取值范围为:-1.7976E+308 ~ -4.94065645841246544E-324 正值取值范围为:4.94065645841246544E-324 ~ 1.797693E+308 |
char | 字符型 | 占用2个字节 取值范围:-27 ~ +27-1 -128~127 |
boolean | 布尔型 | 占用1个字节 只能是True 或是 False |
示例代码:
public static void main(String[] args) {
byte by = 10; //字节型:占用1个字节,取值范围-128~127
short sh = 10; //短整型:占用2个字节,取值范围-32768~32767,在实际开发中使用较少
int i = 10; //整型:占用4个字节,取值范围
long l = 1001; //长整型:占用8个字节
float f = 10.98F; //单精度浮点型:占用4个字节
double d = 10.123456D; //双精度浮点型:占用8个字节
char c = 'A'; //字符型:占用2个字节范围: 0~65535
boolean bool = true; //布尔型:占用字节不确定(true/false)
System.out.println("Byte :" + by);
System.out.println("Short :" + sh);
System.out.println("Integer :" + i);
System.out.println("Long :" + l);
System.out.println("Float :" + f);
System.out.println("Double :" + d);
System.out.println("Character:" + c);
System.out.println("Bool :" + bool);
int aa = 100;//十进制
int bb = 015;//八进制
int cc = 0xff;//十六进制
int dd = 0b1001010101;//二进制
System.out.println("十进制" + aa);
System.out.println("八进制" + bb);
System.out.println("十六进制" + cc);
System.out.println("二进制" + dd);
int salary=3000;
long yearSalary=300000000;
System.out.println(yearSalary);
}
输出:
Byte :10
Short :10
Integer :10
Long :1001
Float :10.98
Double :10.123456
Character:A
Bool :true
十进制100
八进制13
十六进制255
二进制597
300000000
二、类型转换
1.自动类型转换
自动类型转换指的是容量小
的数据类型可以自动转换为容量大
的数据类型
红实线:无数据丢失的自动类型转换
黑虚线:在转换时可能会有精度的损失。
示例代码:
//容量小的类型可以自动转化成容量大的类型
int a = 12345 ;
long b = a;
int c = b;
double d = b;
float f = b;
//long类型不能自动转化成int
//特例: 整型常量是int类型,但是可以自动转成: byte/short/char
//只要不超过对应类型的表数范围
byte h1 = 123;
//byte h2 = 1234; //1234超过了byte的表数范围
char h3 = 97+25;
System.out.printIn(h3) ;
2.强制类型转换
强制类型转换,又称为造型 (cast)用于强制转换数值的类型,可能损失精度。
double a = 3.94152;
int b = (int)a;//浮点数强转为整数
System.out.printIn(b);
//结果:3 (精度损失)