数据类型拓展
整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x
int i =10;
int i2=010;//八进制0
int i3=0x10;//十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
八进制转换为其他进制数的原则是:逢8进1。
八进制化为十进制:例如八进制数1507转换为十进制,
7*8^0+0*8^1+5*8^2+1*8^3=839
浮点数拓展 银行业务怎么表示 无法用下面两个
float 有限 离散 舍入误差 接近但不等于
double
//最好完全避免使用浮点数进行比较,可以用Bigdecimal(数学工具类)
float f=0.1f;
double d = 1.0/10;
System.out.println(f==d);//输出f是否等于d,结果是false,二者并不相等
System.out.println(f);
System.out.println(d);
float d1=23231312313112f;
float d2=d1+1;
System.out.println(d1==d2);//结果显示TRUE`
字符拓展
char c1='a';
char c2='中';
System.out.println((int)c1);//强制换行 char转换成int 字符转换成数字
System.out.println((int)c2);//强制换行
System.out.println(c1);
System.out.println(c2);
//所有的字符本质上还是数字
//原因:Unicode编码 2字节 范围是U0000-UFFFF
char c3='/u0051';//代表字母Q
System.out.println(c3);
转义字符/n /t
例如: /t 制表符 /n换行
System.out.println("Hello/nWorld");//输出时换行
对象 从内存分析
输出flase,New String相当于在内存里创造一个空间,每个空间对应一个地址,比较的是地址
String sa = new String("hello world");//original自动生成的
String sb = new String("Hello World");
System.out.println(sa==sb);//结果是false
布尔值拓展
boolean flag=true;
if(flag==true){}//新手
if(flag){}//老手(这两个代码意思是一样的)
强制转换、自动转换与溢出
- 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
- 容量高–>低:
运算中,不同类型的数据先转化为同一类型,再进行运算。
int i =128;
byte b =(byte)i;//内存溢出 byte最大值127
System.out.println(i);
System.out.println(b);
//强制转换 语法:(类型)变量 高--低
//自动转化 低--高
int i1=128;
double b2=i1;
System.out.println(i1);//输出128
System.out.println(b2);//输出128.0
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换,反之则不用。
4.转化的时候可能存在内存溢出或者精度问题
System.out.println((int)23.7);//精度问题,舍弃了小数部分
char c='a';
int d =c+1;
System.out.println(d);//输出98
System.out.println((char)d);//输出b
//操作比较大的数字时,注意溢出问题
int money=1000000000;
int years=20;
int total=money*years;//输出-1474836480,计算的时候溢出了
long total2=money*years;//还是输出-1474836480,转换之前已经存在问题了,相当于运算后再加Long
System.out.println(total2);
long total3=money*(long)years;//先把一个数转换为long数据类型
System.out.println(total3);//输出正确数值20000000000
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279323.html