基本数据和引用数据
基本数据类型
No. | 数据类型 | 大小/位 | 可表示的数据范围 |
---|---|---|---|
1 | long | 64 | -9223372036854774808 ~ 9223372036854774807 |
2 | int | 32 | -2147483648 ~ 2147483647 |
3 | short | 16 | -32768 ~ 32767 |
4 | byte | 8 | -128 ~ 127 |
5 | char | 16 | 0 ~ 65536 |
6 | float | 32 | 3.402823e+38 ~ 1.401298e-45 |
7 | double | 64 | 1.797693e+308 ~ 4.9000000e-324 |
8 | boolean | - | true / false |
引用数据类型
- 自己定义的(数组、类、接口)
基本数据类型间的转换
- Boolean型不能和其他的基本类型相互转换
- 代码中的整型数值默认为int类型
- 代码中的浮点型数值默认为double类型
- char类型本身是无符号,所以byte不能自动提升到char类型
- char不会自动提升到short
- byte可以直接提升到short
- 自动类型提升
byte b = 4;
int x = 3;
x = x + b;// 自动类型提升
- 强制类型转换
b1 = (byte)(b1 + 129);// 强制转换
- 隐式类型转换
byte b1 = 3;// 隐式转换, 3为int类型4个8位, byte为1个8位, 3在byte的取值范围之内, 隐式转换为byte类型
- Java编译器拿到的数值,默认类型是int,如果赋值给范围小于int的类型,编译器会自行判断,如果当前的数值超过了赋值目标的范围,这时就会报错,否则会自行转换成目标类型
原码、反码、补码
在计算机内部,所有信息都采用二进制表示,每个二进制由 0 和 1 两种状态,一个字节有 8位, 也就是由 8 个 0 或 1 构成,
如果 short 类型的 6 在计算机中是如何存储的, short 是两个字节, 那么
short 6 的二进制为: 00000000 00000110
int
类型的 6 在计算机中存储为 32 位: 00000000 00000000 00000000 00000110
十进制到二进制的换算
规则: 除 2 取余, 逆序输出
如 10 进制 6 二进制换算方式为:
6 / 2 = 3 余 0
3 / 2 = 1 余 1
1 / 2 = 0 余 1
将余数逆序输出就是 6 的二进制表示: 110 , 位数不够补零:00000110
二进制到十进制的换算
规则: 取出最后一位, 从 2 的 0 次方开始乘, 将得到的结果相加即可
如: 二进制的 110 进行十进制换算:
0 * 2 的 0 次方 = 0
1 * 2 的 1 次方 = 2
1 * 2 的 2 次方 = 4
110 的十进制为: 0 + 2 + 4 = 6
第一种理解方式(人类的理解方式)
原码 3
0000 0011
反码 3
1111 1100
补码 正3的补码 代表负3
1111 1101
正数存原码 负数存补码
另一种理解方式(计算机的理解方式)
正数的原码反码补码相同
负数用正数补码来表示
正数3原码 负数3原码
0000 0011 0000 0011
正数3反码 负数3反码
0000 0011 1111 1100
正数3补码 负数3补码
0000 0011 1111 1101
计算机只存补码
变量的范围
- 类变量:独立于方法之外的变量,用 static 修饰,作用范围是整个类
- 实例变量:独立于方法之外的变量,不过没有 static 修饰,作用范围是实例化后的对象
- 局部变量:类的方法中的变量。使用前必须初始化,作用范围是方法内
网友评论