Java——数据类型扩展及类型转换
进制
进制:二进制0b、十进制、八进制0、十六进制0x
int i = 10;
int i1 = 010;//八进制0
int i2 = 0x10;//十六进制0x 0~9 A~F(16)
浮点数扩展
银行业务怎么表示?(钱)
答:使用Java中的BigDecimal数学工具类来表示。
浮点数比较
float f = 0.1f;
double d = 1.0/10;//0.1
System.out.println(f==d);
结果:
float d1 = 1321231231f;
float d2 = d1+1;
System.out.println(d1==d2);
结果:
由此可见,两浮点数进行比较时,最好完全使用浮点数进行比较
字符扩展
所有的字符本身还是数字
编码——Unicode表(u0000~uFFFF):(97=a 65= A) 一个字符2字节 0~65536
char c1 = 'a';
char c2 = '你';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
结果:
转义字符
\t 制表符
\n 换行
…等等
System.out.println("Hello\nWorld");
有趣的:
String sa = new String("HelloWorld");
String sb = new String("HelloWorld");
System.out.println(sa==sb);
String sc = "HelloWorld";
String sd = "HelloWorld";
System.out.println(sc==sd);
why?之后学习类与对象,从对象的角度出发,从内存来分析
布尔值扩展
boolean flag = true;
if(flag==true){}
if(flag){}
类型转换
int i = 128;
byte b = (byte)i;//内存溢出
强制转换 : (类型)变量名 高——>低
自动转换:低——>高
System.out.println(i);
System.out.println(b);
注意
1.不能对布尔值进行转换
2.不能吧对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
System.out.println((int)23.7);//23
System.out.println((int)-24.45f);//-24
System.out.println((int)2);
溢出问题
当操作数比较大时,注意溢出
jdk7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;int total = money*years;//-1474836480,计算的时候溢出了
long total2 = money*years;//默认是int,转换之前已经存在问题了
long total3 = money*((long)years);//先把一个数转化为long
System.out.println(total3);