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

数据溢出只能通过扩大数据范围解决。