进制
//进制 二0b 十 八0 十六0x
int i1 = 010; //八进制
int i2 = 0b100; //二进制
int i3 = 0x100; //十六进制
System.out.println(i1); //8
System.out.println(i2); //4
System.out.println(i3); //256
浮点型错误
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //false
float d1 = 46546321324656f;
float d2 = d1+1;
System.out.println(d1==d2); //true
//比较浮点数不用float
//用 BigDecimal 数学工具类
强制转换和转义字符
char c1 = '中';
System.out.println(c1);
System.out.println((int)c1);//20013
// A==65 a==97
char c2 = '\u0061';
System.out.println(c2); //a ‘\’u表示转义十六进制字符
int c3 = 0x0061;
System.out.println(c3); //97 0x表示十六进制整数
//转义字符
// \t 制表符
System.out.println("aaaa\tbbbb\n"); //aaaa bbbb
int i = 128;
byte b = (byte) i;//内存溢出
//强制转换 (类型)变量名 高-->低
强制转换
System.out.println(i);//128
System.out.println(b);//-128
//自动转换 低-->高
/*
1.不能对布尔转换
2.不能把对象类型转换为不相干类型
3.高转低 强制
4.转换后可能出现内存溢出或者精度问题
*/
System.out.println("================");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
System.out.println("================");
char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char) d);
System.out.println("================");
//数较大时注意溢出 数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; //-1474836480 溢出
long total2 = money*years;//溢出 在转换之前就已经溢出
long total3 = (long) money*years;
System.out.println(total3);