1、数据类型分类
- Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型
- 在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。说白了,基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是这个抽屉的钥匙,钥匙和抽屉一一对应
2、基本数据类型
- 字节:Byte,计算机文件大小的基本计算单位;
- 位:Bit,二进制的一位0或1
1KB = 1024 Byte = 1024 * 8 Bit
布尔型
boolean:布尔型,只能取 true false
JVM规范中,boolean变量作为int处理,也就是4字节;boolean数组当做byte数组处理,占用1Byte
boolean aa = true;
boolean bb = false;
System.out.println(aa);
System.out.println(bb);
char
char:字符型
- 2Byte:范围0~2^16-1 (65535)无负数
- ASCII:American Standard Code Information Interchange美国标准信息交换码128个
- Unicode:万国码,包含了世界上其它国家的语言字符,java采用的就是unicode码
```
// A
char a = 65;
// A
char b = 'A';
<a name="su6Ts"></a>
#### byte short int long
- 整型默认为int
- byte:字节型(1Byte),范围-128(1000 0000)~127(0111 1111)
- short:短整形(2Byte), -2^15~2^15-1
- int:整形(4Byte),-2^31~2^31-1
- long:长整形(8Byte),-2^63~2^63-1
byte dd = 125;
System.out.println(dd);
short ee = 178;
System.out.println(ee);
int ff = 1122;
System.out.println(ff);
long gg = 11L;
System.out.println(gg);
<a name="fUgnW"></a>
#### float double
- 小数的默认类型为double
- float:单精度小数(4Byte)
- double:双精度小数(8Byte)
float hh = 1.2F;
System.out.println(hh);
double jj = 1.34D;
System.out.println(jj);
<a name="vrs8r"></a>
### 3、基本类型转换
- 整数默认int,小数默认double
- 容量排序byte > short > int > float > long > double;boolean不能转换
- 自动类型转换:容量小的类型自动转换成容量大的类型
- 强制类型转换:容量大的类型转换成容量小的类型,需加强制转换符,会造成精度降低或数据溢出
/**
* 自动类型转换:容量小的类型自动转换成容量大的类型
*/
long ff = 100;
/**
* 强制类型转换:容量大的类型转换成容量小的类型
*/
float aa = 1.2;//报错
float bb = 1.2f;
float cc = (float) 1.2;
<a name="gU1hD"></a>
#### byte特例
- byte相关强转
- 整型变量若在byte类型的保存范围内,可以直接赋给byte变量,不用强转;
- 整型变量若不在byte类型的保存范围内,必须强转;
// byte 取值范围 -128~127
// int 赋值给byte,应该强转,但是在byte范围内则不需要强转
byte a = 127;
// 不在范围内需要强转.最终的值是-128
// int 128 的二进制 00000000 00000000 00000000 10000000
// 强转byte 1000 000,反码就是 1111 1111 原码1000 000就是-128
byte b = (byte) 128;
System.out.println(b);
<a name="tndLB"></a>
#### char特例
- char 类型与int类型互相转换
int aa = 65;
int bb = 'A';
char cc = 'A';
char dd = 65;
```