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

java

             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的结果就是一个算数表达式。

以上是 Java基础-算术运算符(Arithmetic Operators) 的全部内容, 来源链接: utcz.com/z/390311.html

回到顶部