java学习知识

java学习

1.浮点数扩展

少用浮点数进行比较,因为有误差
例:

// 比较俩浮点数是否相同
float f1 = 123456f;
float f2 = f1 + 1;
System.out.println(f1==f2);//true

看出俩值并不相等结果却相等,原因是浮点数表示的字节数是有限的也是离散的,他有些数字没办法精确表示,所以用了舍入误差,结果只能是一个大约数。
以后会用到一个工具类(BigDecimal-数学工具类)

2.字符扩展

char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换

运行结果
原因是所有的字符本质还是数字,用Unicode编码变成现在能认识的字,Unicode可以处理各种文字,占2个字节,以前最多表示216=65536字符,现在更多。
转义字符

System.out.println("Hello\nWord);

结果

3.布尔值扩展

boolean flag = true;
if (flag==true){}//新手
if (flag){}//老手

其实这俩行代码是一样的,因为它默认为true,要代码精简易读最好用后面的那种。

4.类型转换

类型转换
小数的优先级大于整数

int i = 123;
byte b = (byte)i;//赋值给b要将i强制转换
System.out.println(i);
System.out.println(b);

结果
结果变为负数是因为byte最大值是127,给它赋值128就内存溢出了。
类型转换有两种(强制转换和自动转换)

  • 强制转换 由高转到低
    格式需要(类型)变量名
  • 自动转换 由低转到高
    直接写=
    操作比较大的数的时候,注意溢出问题
    数字可以加下划线好分辨,不影响输出
int money = 10_0000_0000;
int years = 20;
int total = money*years;//得出是负数,计算的时候溢出了
long total2 = money*years;
//还是负数,因为结果计算完默认是int然后再转换,转换之前已经存在问题了
long total3 = money*((long)years);//先把一个数转换为long,输出200_0000_0000

所以最好先转换再求结果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部