二进制 Bit
1. 字节 Byte
- 计算机能够寻址的最小单位
- 1 Byte = 8 Bit(二进制位)
2. 各种类型所占字节数
- 1 Integer = 4 Byte = 32 Bit
- 1 Short = 2 Byte
- 1 Char = 2 Byte
3. ASCII码表
- 最常用的字符对照表
基本数据类型
1. 原生数据类型
- 变量存的就是数据的值
- 没有对应类的数据类型
- 每个原生类型都有一个对应的装箱类型,在java.lang下
- 比如byte -> Byte,int -> Integer
- 原生数据类型有
- byte 1个字节
- short/int/long 2/4/8个字节
- float/double 4/8个字节
- char 2个字节
- boolean true/false,没有对应字节概念
- void?
- 浮点数是小数在计算机中的近似表示
2. 引用类型(对象)
- 变量存的是数据的地址
类型转换与类型提升
1. 高精度转低精度
- 精度丢失
- 无法自动执行,必须强制转换
- int i = (int)(1 + 1.0);
2. 类型提升是会自动执行得
- 整数 + 浮点数,整数会自动被转化为浮点数
- char完全等于对应的ascii码
- char c = ‘1’; 完全等于 char c = 49;
- c + 1为ascii50对应的’2’
基本数据类型对应的装箱类型
- 装箱类型可以提供很多额外方法,方便使用、操作
- 自动装箱:int -> Integer
- 自动拆箱:Integer -> int
- List
这种Collection容器不接受int这类原生类型,它的内部会自动拆装箱 - boolean只能有两种状态:true、false,Boolean还有一种null
- 装箱类型还提供MAX_VALUE, MIN_VALUE等
- 装箱类型的坑:
Integer i = null;
int a = i;
// NullPointerException
// 装箱类型可以为null,对null拆箱造成空指针异常
equals与‘==’约定
- 区别:
- ==: 比较二者是否相同(基本类型是值,对象是地址)
- equals:比较二者是不是相等(由每个类型自己定义)
- 坑: ```java Integer a = 1000; Integer b = 1000;
System.out.println(a == b); // false System.out.println(a.equals(b)); //true
Integer c = 1; Integer d = 1; // 为了防止产生很多零散的对象,Java内部做了一些优化,一定范围内的值会指向同个已在内存中的对象 // Python也做了类似优化 System.out.println(c == d); // true System.out.println(c.equals(d)); //true ```