数据类型
基本数据类型
基本数据类型包括:数值型、字符型(char)、布尔型(boolean) 数值型又分为整数类型(byte、short、int、long)和浮点类型(float 4字节、double 8字节)、字符类型char占2个字节 其中布尔类型只有两个值 真(true) 假(false)
引用数据类型
类(class)、接口(interface)、数组
1. 基本数据类型变量存的是数据本身(也就是存在 栈内存空间里边),而引用类型变量存的是保存数据的空间地址(保存数据的堆内存的数据地址)
-
栈内存区里每一个内存单元的大小固定,内存不大;堆内存的每一个内存单元,大小是弹性的
数据类型扩展及面试题
整数扩展
进制: 二进制(0b开头)、十进制、八进制(0开头)、十六进制(0x开头)
代码:
int i = 10;
int i2 = 010; //八进制
int i3 = 0x10; //十六进制
System.out.println(i);
System.out.println(i2); //八进制0
System.out.println(i3); //十六进制0x 0~9 A~F(16)
浮点数扩展
银行业务怎么表示?钱
先看代码:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d);
此时输出的结果为 false
float d1 = 2333305161481f;
float d2 = d1 + 1;
System.out.println(d1==d2);
此时输出的结果为 true
因为 float 表示的字长是有限的,也是离散的,浮点数一般都存在舍入误差,接近但不等于
所以最好完全使用浮点数进行比较!!
最好完全使用浮点数进行比较!!!
最好完全使用浮点数进行比较!!!
那么银行业务就不用浮点数表示,用BigDecimal 数学工具类表示!
字符扩展
-
强制类型转换
char c1 = '中';
char c2 = 'a';
System.out.println(c1);
System.out.println((int)c1); //强制类型转换
System.out.println(c2);
System.out.println((int)c2);
-
所有的字符本质还是数字,在Unicode编码表中(97 = a 65 = A) 2字节
char c3 = '\u0061';
System.out.println(c3);
输出 a
-
转义字符
浙公网安备 33010602011771号