primitive type 基本数据类型(4类8个)
整数类型 | 字节(Byte)数(1个字节8位) | 范围 |
---|---|---|
byte | 1个字节 | -128 ~ 127 |
short | 2个字节 | -216 ~ 216 -1 |
int | 4个字节 | -232 ~ 232 -1 |
long | 8个字节 | -264 ~ 264 -1 |
浮点数类 | 字节(Byte)个数 | 范围 |
---|---|---|
float | 4个字节 | – |
double | 4个字节 | – |
字符型 | 字节个数 | 范围 |
---|---|---|
char | 2个字节 | unicode 编码一般占两个字节 |
布尔型 | 位数 | 取值 |
---|---|---|
boolean | 1位 | true / false |
reference type 引用数据类型
类 | 接口 | 数组 |
---|
扩展小知识
字节Byte 一般用大写的 B 表示; 位 bit 一般用小写b表示;
1B = 8b
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1T
进制表示
二进制 ---------->> 0b
八进制 ---------->> 0
十六进制 ------->> 0x
银行等金融业务不得使用 float double, 使用BigDecimal 数学工具类
float 和 double在计算机中都是近似表示的,因此要完全避免使用浮点数进行是否相等的比较;
字符的本质还是数字,是由字符集对应的字符编码表将对应的数字代表的字符编码映射成字符
如 unicode字符集 u0000 ~ uFFFF 之间; ‘\u0061’ 表示字符 ‘a’ 而十六进制的0061 正是十进制的 97
所以 System.out.println((int)‘a’); 打印的结果是97;
转义字符
转义字符 | 意思 |
---|---|
\t | 制表符 |
\n | 换行符 |
类型转换
基础类型的转换
运算中,不同类型的数据先转换成相同的数据类型才能进行运算;
低-------------------------------------------------> 高
byte,short,char < int < long < float < double
自动转换 —— 从低精度到高精度自动发生
强制转换 —— 从高精度到低精度会丢失精度 >> ( 如:浮点数转到整数会只保留整数部分)
强制转换时程序员要自行承担
long l = 56; // java中默认的整数类型是int 这里发生了自动转换 int->long
int a = (int)l; // 这里把上面的l强转为int类型 long->int
View view = new TextView(); // View 是 TextView的父类 这里会自动转换
引用类型的类型转换
父类 < 子类
接口/抽象类 < 实现类
自动转换 —— 子类/实现类 自动转换为 父类/接口/抽象
强制转换 —— 父类转换为具体的子类 >> 开发者对结果负责
View view = new TextView(); // View 是 TextView的父类 这里会自动转换
View view2 = new View();
TextView textView = (TextView)view; // 开发者自己知道这个view对象是一个TextView对象,强转成TextView没问题
TextView textView2 = (TextView)view2; // 这里view2不是一个TextView对象,开发者任然将其强转成TextView,会导致程序报错。开发者自行负责