java的数据类型一共分为两类:基本数据类型、引用数据类型
1、基本数据类型:
| 基本数据类型 | m描述 | 所占字节 | 数值范围 | 默认值 | 使用场景 |
| byte | 8位、有符号的,以二进制补码表示的整数 | 1字节 |
-128~ 127 |
0 | 内容传递或者编码转换(字节流) |
| short | 16 位、有符号的以二进制补码表示的整数 | 2字节 | -32768~32767 | 0 | b不常用 |
| char | 单一的 16 位 Unicode 字符 | 2字节 | \u0000~\uffff(0~65535) | 表示中文,可在一定程度上避免乱码 | |
| int | 32位、有符号的以二进制补码表示的整数 | 4字节 | -2147483648~2147483647 | 0 | 整数最常用 |
| float | 单精度、32位、符合①IEEE 754标准的浮点数 | 4字节 | 0.0f | 不常用 | |
| long | 64 位、有符号的以二进制补码表示的整数 | 8字节 | -2^63~(2^63)-1 | 0L | 表示文件(或者内存)大小比较大的整数时或者描述日期时间数字如201904101308 |
| double | 双精度、64 位、符合IEEE 754标准的浮点数 | 8字节 | 0.0d | 小数最常用 | |
| boolean | 表示一比特的信息 | 理论上占用1bit,1/8字节,实际处理按1byte处理 | false | 逻辑控制 |
2、引用数据类型:类、数组、接口等,它们的默认值是null
3、常用的ASCII编码表如下
| 0 | 48 |
| 9 | 57 |
| A | 65 |
| Z | 90 |
| a | 97 |
| z | 122 |
4、java的常量
常量在程序运行时是不能被修改的、使用 final 关键字来修饰常量,声明方式和变量类似(常量名全大写):
final double PI = 3.1415927;
byte、int、long、和short可以用十进制、16进制以及8进制的方式来表示,当使用常量的时候,前缀 0 表示 8 进制,前缀 0x 代表 16 进制。
java的数据类型的转换分为:自动类型转换、强制类型转换
特别地:
-
不能对boolean类型进行类型转换。
-
不能把对象类型转换成不相关类的对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
1、自动类型转换:将取值范围小的类型自动提升为取值范围大的类型 。
byte 类型的数据(1字节)和 int 数据的数据(4字节)进行运算时,会自动补充3个字节,将计算结果自动提升到int类型。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
2、强制类型转换:强制转换需要我们自己手动地将取值范围大的类型强制转换成取值范围小的类型。
数据类型 变量名 = (数据类型)被转数据值
这样可能会造成数据丢失或者精度丢失,严重的还会导致数据溢出
3、数据溢出:当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,整型变量所输出的值将发生紊乱和错误
1 public static void main(String[] args){ 2 int a =128; 3 int b =129; 4 byte c = (byte) a; 5 byte d = (byte) b; 6 System.out.println(a+"-->"+c); 7 System.out.println(a+"-->"+d); 8 }
程序运行结果:
128 --> -128
129 --> -127
数据溢出只能通过扩大数据范围解决。