Java语言基础(八)

Java语言基础(八)

一.数学运算  + - * /  %

    (1)凡是byte  short  char类型都按int类型的计算

       

    

 

        看看上面的代码,为什么出错!

 

        我已经将100转成byte类型,(byte)100  是byte类型的,b也是byte类型的

        那么赋给byte类型的b1 ,为什么还报错

 

 

    

 

 

        原因是(1),byte类型的计算按int类型的计算

 

 

 

       

        还有个问题,看下面这个

       

        这段代码为什么不报错,按前面说,byte类型的计算按int类型的计算,那么这个呢

       

 

       

       

       

       

        那因为,Java编译期间,将常量的运算优化为结果 在运行时,

        c的结果已经是c=102  而不是c=100+2了

       

       

       

        再看如下代码:

                

            前面说,会自动将常量的计算优化为结果,那为什么这里还报错

               

           

 

        实际上,这句(会自动将常量的计算优化为结果)是有限制的,那就不能超过

        byte类型的最大值 即127

           

        short类型的  最大值是32767

           

        char类型的  最大值是65535

 

 

 

 

 

        说明:  变量运算在运行期间执行,如下会报错 ,不会优化

               

        (2).同种类型参与运算,返回同种类型 但可能发生自动类型转换

            int a=2*3  2是整数,3是整数,那么a也是整数  上面那句就是这个意思

 

 

 

 

        加减乘和日常生活说的一样,但计算的结果别越界

 

        这里说说,除法,与取模;

 

二.取取运算

            (1).负数的余数是(-(n-1),0]

            (2).整数的余数是[0,n)

                  

                 

原文地址:https://www.cnblogs.com/codeOfLife/p/3665208.html