zoukankan      html  css  js  c++  java
  • Java基础-算术运算符(Arithmetic Operators)

                 Java基础-算术运算符(Arithmetic Operators)

                                     作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

      Java程序通过运算符实现对数据的处理,Java中的运算符包括:算数运算符,关系运算符,逻辑运算符,条件运算符,位运算符,移位运算符等等。本篇博客主要介绍算数运算符。算数运算符包括:“+,-,*,/,%,++,--”。

    一.算数运算符的特点

    1>.运算结果可能超出数据类型表示范围;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic{
     8     public static void main(String[] args){
     9         int num1,num2,result;
    10     
    11         //运算结果可能超出数据类型表示范围
    12         num1 = 2147483647;
    13         num2 = 1;
    14     
    15         result = num1 + num2;
    16         System.out.println(result);            //-2147483648
    17         /**
    18             num1的二进制为:
    19                 0111 1111 1111 1111 1111 1111 1111 1111
    20             num2的二进制为:
    21                 0000 0000 0000 0000 0000 0000 0000 0001
    22             +
    23             ----------------------------------------------
    24                1000    0000  0000 0000 0000 0000 0000 0000
    25         */
    26         
    27         num1 = -2147483648;
    28         num2 = 1;
    29         result = num1 - num2;
    30         System.out.println(result);            //2147483647
    31 
    32     }
    33     
    34     
    35 }

    2>.整数相除结果为整数;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic1{
     8     public static void main(String[] args){
     9     
    10         //除法,整数相除,结果为整数,舍弃小数部分
    11         System.out.println( 10 / 3 );        //3
    12         System.out.println( 10 / -3 );        //-3
    13         System.out.println( -10 / 3 );        //-3
    14         System.out.println( -10 / -3 );        //3
    15     }
    16     
    17     
    18 }

    3>.除数为0的情况;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic2{
     8     public static void main(String[] args){
     9     
    10         //除法,除数为0的情况
    11         // System.out.println( 10 / 0 );
    12         /**
    13             整数相除,0作为除数时,编译没有语法错误
    14             运行时产生算术异常:java.lang.ArithmeticException: / by zero
    15             注意:
    16                 整数相除时,保证除数不能为0.
    17         */
    18         
    19         
    20         //小数相除时,除数为0运行通过,但是结果不是一个数。
    21         System.out.println( 10 / 0.0 );            //Infinity,表示无穷大
    22         System.out.println( 10 / -0.0 );        //-Infinity
    23         System.out.println( -10 / 0.0 );        //-Infinity
    24         System.out.println( 0 / 0.0 );            //NaN,表示Not a Number
    25         System.out.println( -0 / 0.0 );            //NaN
    26     
    27     }
    28     
    29     
    30 }

    4>.余数的符号和被除数一致;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic3{
     8     public static void main(String[] args){
     9     
    10         //求余,余数的符号与被除数的符号一致
    11         System.out.println( 10 % 3 );        //1
    12         System.out.println( 10 % -3 );        //1
    13         System.out.println( -10 % 3 );        //-1
    14         System.out.println( -10 % -3 );        //-1
    15     }
    16 }

    5>.自增与自减;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic4{
     8     public static void main(String[] args){
     9     
    10         //自增与自减
    11         /**
    12             1>.自增与自减针对变量进行操作;
    13             2>.自增就相遇变量的值加1,自减就是变量的值减1
    14         */
    15         
    16         int x = 10;
    17         x++;                        //相当于x = x + 1;
    18         System.out.println(x);        //11
    19         
    20         x = 20;                    
    21         x--;                        //相当于x = x - 1;
    22         System.out.println(x);        //19
    23         
    24     }
    25 }

    6>.前缀与后缀的区别;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic5{
     8     public static void main(String[] args){
     9     
    10         int a;
    11         //自增与自减有前缀和后缀两种形式
    12         /**
    13             ++a        这是前缀形式
    14             a--        这是后缀形式
    15             区别:
    16                 前缀形式先自增后运算
    17                 后缀形式是先参与运算再自增
    18         */
    19         a = 10;
    20         int b = ++a;
    21         /**
    22         前缀形式:
    23             1>.先把变量a的值取出来加1
    24                 a = a +1;
    25                 现在的a的值为11
    26             2>.再把变量a的值11赋值给变量b
    27         */
    28         System.out.println(b);            //11
    29         
    30         a = 20;
    31         b = a++;
    32         /**
    33         后缀形式:
    34             1>.先把变量a的值保存在一个临时变量中
    35                 int temp = a;        //temp = 10
    36             2>.变量a进行自增
    37                 a = a + 1            //a = 11
    38             3>.实际上是临时变量参与计算
    39                 b = temp;            //b = 10
    40         */
    41         System.out.println(b);            //20
    42     }
    43 }
     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic6{
     8     public static void main(String[] args){
     9     
    10     //面试题:
    11     int x =10;
    12     x = x++;
    13     System.out.println(x);        //打印的结果为什么会是10呢?
    14     
    15     /**
    16         1>.int temp = x;                //temp == 10
    17         2>.等号右侧的变量x进行自增        
    18             x = x +1;                    //x = 11
    19         3>.是把临时变量temp的值赋值给左侧的x变量
    20             x = temp                    //x = 10
    21     */
    22 }
    23 }
    这里有一道我在网上找的面试题,你可以戳进来哟!

    7>.自增与自减隐含着强制类型转换;

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 public class Arithmetic7{
     8     public static void main(String[] args){
     9     
    10     //自增与自减隐含着强制类型转换
    11     
    12     byte a = 10;
    13     // a = a + 1;            
    14     /**
    15         由于byte在运算的过程中会自动提升为整形,即左边的a是byte类型,而右边的a确是
    16     int类型。因此会报错:“错误: 不兼容的类型: 从int转换到byte可能会有损失”。
    17     */
    18     
    19     a++;        //相当于 a = (byte)(a+1);
    20     
    21     System.out.println(a);        //11
    22     
    23     char b = 'A';
    24     b++;        //相当于b = (char)(b+1);
    25     System.out.println(b);        //B
    26     
    27     
    28 }
    29 }

    8>.表达式的数据类型;

      在进行算数运算时,整数,小数,字符都可以参与运算,整个算数表达式的数据类型是:

        1>.如果有double类型数据参与运算,整个表达式就是double类型;

        2>.否则,如果有float类型数据参与运算,整个表达式就是float类型;

        3>.否则,如果有long类型参与算数运算,整个表达式就是lang类型;

        4>.否则,整个表达式就是int类型;

      补充:算数表达式就是用算术运算符链接起来的式子,如:"int num1 = 10; int num2 = 20; int res = num1 + num2; ",其中res的结果就是一个算数表达式。

  • 相关阅读:
    排序算法合集(冒泡,选择,插入,堆排,快排)
    codeforces 632+ E. Thief in a Shop
    nyoj-一笔画问题-欧拉图+联通判定
    hdu-1179-二分图最大匹配
    hdu-2063-二分图最大匹配
    (转)二分图的最大匹配、完美匹配和匈牙利算法
    hdu-2444-二分图判定+最大分配
    C
    E
    C
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8679721.html
Copyright © 2011-2022 走看看