运算符

作者: 善倾 | 来源:发表于2018-09-21 15:46 被阅读0次

    运算符尽管很基础,但也存在一些细小的知识点会遗漏,不清楚的情况。做记录,以备遗忘吧。

    算数运算符中的 / 和 %

    对于整型数据

    整型数据的除法和取余运算很简单,非常的直观

    • 17 / 0:会抛出java.lang.ArithmeticException 异常
    • 0 / 0 :会抛出java.lang.ArithmeticException 异常
    • 0 % 17:等于 0
    • 17 % 0:会抛出java.lang.ArithmeticException 异常,因为取余就相当于先进行了除数运算,再拿到余数作为计算结果

    对于实型数据

    实型数据可就复杂了哦,但是实型数据除了一个正无穷一个负无穷的情况,其他都是 NaN,好记的很啊!NaN 全称是 not a number ,源码中是如下定义的:public static final double NaN = 0.0d / 0.0;

    • 17.0 / 0 :返回结果为 Infinity,正无穷
    • -17.0 / 0:等于 -Infinity,负无穷
    • 0 / 0.0:返回结果为 NaN
    • 0.0 % 0:返回结果为 NaN
    • 17.6 % 4:整数取余,再加上剩下的小数

    运算符中的 +

    作为算数运算符的加法

    byte、short、char 这三种数据类型在参与运算的时候,可能会被自动转换为 int 类型的数据参与运算,具体规则如下:

    • 单目运算不会改变类型,j++
    • 复合双目运算不会改变类型,j+=1
    • 双目运算会改变类型,j = j + 1

    作为字符串连接符

    String s = "hello" + "world",这时候,体现的是作为字符连接符的作用。在方法区的常量区开辟内存空间!

    循环结构

    循环结构中有一个特例,即使用 break / continue 和 label 标签配合使用来结束循环代码块。单独使用 break 只能跳出本层循环,但配合使用标签可以跳出更外层的循环。是跳出标签指定范围内的这个代码块,光标直接跳到这个代码块的结束位置。这种方式更灵活,代码可读性也高。

    public static void main(String[] args) {
        label1:  
            while (true) {
                label2:
                for (int i = 0; i <= 10; i++) {  
                    System.out.println("i=" + i);  
                    if (i == 5) {  
                        // 跳出 label1 标签指定的代码块结束位置
                        break label1;
                    }  
                }  
                System.out.println("++++++++++++++");  
            }
    }
                
    

    相关文章

      网友评论

        本文标题:运算符

        本文链接:https://www.haomeiwen.com/subject/kltznftx.html