进制 二进制0B 十进制 八进制0 十六进制0x
int a1 = 10; int a2 = 010; //八进制0 int a3 = 0x10; //十六进制0x 0~9 A~F 16浮点数拓展
BigDecimal 数据工具类
float类型 有限 离散 舍入误差 大约、接近但不等于
double
比较时最好完全使用浮点数进行比较(两个比较的值)
float a4 = 0.1F; //0.1 float a5 = 1.0/10; //0.1 a4 != a5 float a6 = 123456; float a7 = a6 + 1; a6 = a7字符扩展
所有字符本质还是数字
编码 Unicode表:(97 = a 65 = A) 占用2字节 范围0-65536、U0000-UFFFF 2^16 = 65536
t 空格 n 换行
char a8 = 'a'; char a9 = '李'; char a10 = 'u0061'; System.out.println(a8); //a System.out.println(a9); //李 System.out.println((int)a8); //97 强制转换 System.out.println((int)a9); //26446 强制转换 System.out.println(a10); //a布尔值扩展
boolean flag = true;
if(flag){}
类型转换
-
由于Java是强类型语言,有些运算的时候需要将类型进行转换
-
低至高 byte-short-char-INT-long-float-double
-
布尔值无法转换
-
不能将对象类型转换为不相关的类型,INT - String
-
强制转换:转换时数据类型由高转低转换
-
自动转换:低转高
-
转换时避免内存溢出或精度问题
-
int i = 128; byte b = (byte)i; System.out.println(b); //-128 因为byte类型最大至127,导致内存溢出,输出后的值无法控制,转换时避免内存溢出 char c = 'A'; int d = c + 1 ; System.out.println(d); //65+1 Unicode表中对应的A对应的数字65,+1 System.out.println((char)d); //B Unicode表中对应的65+1的字母B int money = 10_0000_0000; //JDK7新特性,数字之间可以用下划线分割,并且不会输出下划线 int year = 20; int total = money * year; //输出结果错误,INT类型内存溢出 long total2 = money * year; //输出结果错误,虽然变量类型为long,但是在计算时结果默认是int类型 long total3 = money * ((long)year); //输出正常,需要将其中一个数值先转换



