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

所以最好先转换再求结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值