JAVA 数据类型和多种运算符小结

java 数据类型 

引用类型
基本数据类型:
    boolean   占 1 个二进制位  
    byte         8
    char         16
    short        16
    int          32
    long         64
    float        32
    double       64

第一个二进制位表示符号位 0 表示 正数,1 表示为负数.

对于单精度浮点数来说第一个二进制位表示符号位,后2-9个二进制位用来表示指数,后23个二进制位则用来表示尾数。

浮点数进行运算是有可能是会损失精度的,例如:
System.out.println(1.0 - 0.9);
//结果为 0.09999999999999998

出现这种情况的原因为:java 中浮点默认是用 double 类型的,计算机在处理数据的时候先把数据转为二进制,但是小数转二进制就会损答精度,例如:0.1(十进制) 要转到二进制,

0.1 * 2 = 0.2  取 正数部份  0 
0.2 * 2 = 0.4             0
0.4 * 2 = 0.8             0
0.8 * 2 = 1.6             1
0.6 * 2 = 1.2             1
0.2 * 2 = 0.4             0
......                    ......

这样是永远不会等于零的,就像10 除以 3 一样,无限循环,但是double类型的数据只占那么多个二进制位,所以在在转向二进制的时候就相对数值会小一点点(非常小),所以结果会出现 0.09999999999999998这样的结果,JDK 会提供了一个可以求任意精度数值的一个类——BigDecimal。

float f1 = 1.22222222222222222222222222222222222222222222222f;
        float f2 = 1.00000000000000000000000000000000000000000000001f;
        System.out.println("f1 - f2 = "+(f1 - f2));

        BigDecimal b1 = new BigDecimal("1.22222222222222222222222222222222222222222222222");
        BigDecimal b2 = new BigDecimal("1.00000000000000000000000000000000000000000000001");
        BigDecimal subtract = b1.subtract(b2);
        System.out.println("b1 - b2 = "+subtract);
//打印的结果
//f1 - f2 = 0.22222221
//b1 - b2 = 0.22222222222222222222222222222222222222222222221

&与运算

&& 短路与


        int i = 1;
        if (i > 0 & i++ > 1) {

        }
        System.out.println(i);

        int j = 1;
        if (j < 0 && j++ > 1) {

        }
        System.out.println(j);

//打印结果:  2 1

与运算符会两边的表达示都会进行计算,就算编绎器知道了第一个表达式为false,而短路与则不同,在上述例子中 当 j < 0 是等于 false 时,这时整个表达式己经确定为false 了,所以编绎器对第二个表达式是不进算运算的,所以打印的结果为 n = 1


^ 异或运算符

int a = 3;
int b = 4;
System.out.println(a ^ b);
//打印结果: 7
 011
^100
 111
 异或运算当两个二进制位相同则等于0,不相同则等于1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值