| 数据类型 | 内存 | 取值范围 | 默认值 |
|---|---|---|---|
| byte | 1 | -27~27-1/-128~127 | 0 |
| short | 2 | -215~215-1/-32768~32767 | 0 |
| int | 4 | -231~231-1/-2147483648~2147483647 | 0 |
| long | 8 | -263~263-1 | 0L |
| float | 4 | -231~231-1 | 0.0f |
| double | 8 | -263~263-1 | 0.0 |
| boolean | 1 | true/false | false |
| char | 2 | 0~216-1/0~65535 | ‘u0000’ |
Note:
char可以存储一个汉字,一个汉字两个字节 字符编码
ASCII码Unicode编码:统一了全球国家的文字(Java采用)
UTF-8UTF-16UTF-32 字符型详解
char类型可以容纳一个汉字只能用单引号,不能用双引号(双引号是String)转义字符
tnu\:表示一个’ :表示一个’":表示一个" 整数型详解
整数型数据在Java中四种表示方式
十进制八进制 0十六进制 0x二进制 0b
Java语言中整数型字面量默认被当作int处理
表示long类型要在后面加L/l
public class IntegerTypeTest02
{
public static void main(String[] args)
{
int a = 10;
long b = 10L;
long c = 10; // 符合语法规则
}
}
int类型可以赋值给long,即小容量可以直接赋值给大容量,成为自动类型转换
public class IntegerTypeTest02
{
public static void main(String[] args)
{
int a = 10;
long b = 10L;
long c = 10; // 符合语法规则
System.out.println(c);
int d = c;
}
}
大容量赋值给小容量,需要手动添加强制类型转换
int d = (int)c;
Note:
强制类型转换可能会导致精度损失
正数的原码、补码、反码是同一个,负数的反码是在原码基础上符号位不变,其余按位取反,补码是反码+1
public class IntegerTypeTest03
{
public static void main(String[] args)
{
long num = 2147483648;
}
}
Java把2147484648默认当作int处理,但是这个数字本身超过了int的取值范围
解决方法:
long num = 2147483648L;
public class IntegerTypeTest04
{
public static void main(String[] args)
{
byte b = 1;
System.out.println(b); // 没有报错
byte z = 128; // 报错
System.out.println(z);
}
}
当一个整数型字面量没有超出byte类型取值范围,可以直接赋值给byte超过会报错,需要加强制类型转换short和char也有同样的规则 布尔值详解
只有true/false,没有1/0
浮点型详解只要是浮点型的字面量默认当作double处理
表示float要在后面加f/F
基本数据类型转换总结
8种基本数据类型,除了boolean类型,其它七种可以互相转换整数型字面量没有超过byte、short、char的范围可以直接赋值小容量向大容量转换成为自动类型转换:byte



