• Java常见问题3:周期之谜


    谜24

    byte是有符号的。范围是-128 - 127。

    而0x90是int类型。

    比較的时候。不相等。

    假设想让其相等,须要进行类型转换:(byte & 0xff) 或者 (byte)0x99。

    谜题25

    自增运算符对循环的影响。j = j++,先赋值。

    谜题26

     Integer.MAX_VALUE加一之后会变成Integer.MIN_VALUE。这对循环会有影响。
    能够考虑使用long来表示i变量,或者使用效率更高的i != Integer.MAX_VALUE。

    谜题27

    (-1 << 32)的结果是-1而不是0。
    对于int型的数据移位运算总是取右端数转换成2进制的低五位。
    对于long型的数据移位运算总是取右端数转换成2进制的低六位。

    32取低五位是0。因此结果是-1。
    假设右边的数是负数,相同保留低五(六)位,将其转换为正数。

    谜题28

    while(i == i + 1) {
    }

    当浮点数i足够大时候, i = i + 1。

    相邻浮点数之间的距离被称为ulp(unit int the last place),一旦ulp超过2。加一将不会产生不论什么影响。

    二进制浮点数算术仅仅是一种近似。

    谜题29

    while(i != i) {
    }
    IEEE 754浮点算术保留了一个特殊的值:NaN(not a number)。
    double i = 0.0 / 0.0。double i = Double.NaN,
    不论什么浮点数操作,仅仅要一个或多个操作数为NaN,那么结果是NaN。
    NaN不等于不论什么浮点数,包含它自身。NaN  != NaN 。

    谜题30

    while(i != i + 0) {
    }
    i != i + 0,假设i是String类型。此时的+就不是算术加号了,被重载为字符串的连接。

    谜题31

    while(i != 0) {
    i  >>>= 1;
    }
    还是在讲类型转换。
    当i为short类型的-1的时候,i >>>= 1,仍旧是-1:首先将short转换为int。然后在截取低位16。
    short,byte的不论什么负数终于都会转换为-1。而char不会,char是无符号的。

    谜题32

    Integer i = new Integer(0);

    Integer j = new Integer(0);

    while(i <= j && i >= j && i != j){

    }

    包装类,当使用==运算符时候,并非推断值相等,而是引用(兼容性考虑)。

    <=或者>= 都是值推断。

    谜题33

    while(i != 0 && i == -i) {
    }
    整数的边界问题
    0x8000 0000 表示最小的负数(Integer.MIN_VALUE),对其求相反数,仍是其本身。

    谜题34

    		final int START = 2000000000;
    		int count = 0;
    		for (float f = START; f < START + 65; f++) {
    			count++;
    			System.out.println(START + 65);
    		}

    浮点数精度问题
    START+50与START相等,当使用浮点数表示的时候。50比START的ulp距离(128)的一半还小。

    当超过ulp的距离的一半的时候,无限循环。

    谜题35

    取余和乘除具有同样的优一年级。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    JVM笔记
    数论之GCD
    a+b problem
    table 随着内容自动适应宽度
    jquery 去除 css 的 background-image 样式
    jquery.table2excel,将HTML的table标签数据导出成excel
    C# MVC 视图 计算某一个列的总和
    template.js 求和 问题
    JavaScript 数组去重
    c# 获取api 数据
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4722366.html
Copyright © 2020-2023  润新知