java 数学运算与位运算

1. 位运算

& 按位与

| 按位或
^ 按位异或
~ 按位取反
<< 按位左移,补0
>> 按位右移,新的符号位同原来的符号位
>>> 按位右移,新的符号位总为0
所有的位操作符处理对象都是数字的补码

2. 小数处理

整数与整数的除法结果仍是整数,小数点会被直接舍掉。
小数转化为整数,如(int)2.9还是小数点截掉处理。
% 求余运算符。若10.3%10,答案是0.3,而非整数

3.Math.常用方法

random() 随机数,返回[0,1)区间的double值。
round(x)返回x的四舍五入的值
max(a,b) a,b的最大值。注意,只是值比较,即便实参为引用类型,返回值也是基本类型。
min(a,b) a,b的最小值。
abs(x) 返回x的绝对值
ceil(x) 天花板,不小于x的最小整数
floor(x) 地板,不大于x的最大整数
pow( a,  b) 计算a为底数,b为指数的表达式
log( a) 计算以e为底的a的对数。若想计算以a为底的b的对数,需要log(b)/log(a)。

4.包装类型

java.lang.Double等。
包装类型之间比较大小可以用  大于号,小号(>,<)等,但相等的比较还需要用 equals()方法,不然还是比较的引用地址。

5.自动装箱拆箱

空指针问题

包装类型可以为null, 但基本类型不能为null.
所以此时自动拆箱会有空指针异常。

类型转换问题

基本类型可以互转, 比如 int -> double. 

但包装类型不能转. Integer -> Double.

Long a=null;
//Exception in thread "main" java.lang.NullPointerException
long b=a;

    public static void main(String[] args) {
        Integer a = 1;
        // 1.0
        System.out.println((double) a);

        Object b=a;
        // class java.lang.Integer
        System.out.println(b.getClass());

        // Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
        System.out.println((double) b);
    }

6.溢出

数值溢出是不会有任何异常的, 所以自己编码要小心.
int x=Integer.MAX_VALUE;
x++;
System.out.println(x);//-2147483648
如果想要有异常效果, 可以用下面的方法:
int java.lang.Math. addExact(int x, int y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值