Java算术运算符包括:+(两个数字求和)、-(两个数字相减)、*(两个数字乘积)、/(两个数字相除)、%(两个数字取模或者求余)、++(单目运算符,对数字自加1)、--(单目运算符,对数字自减1)。对于初学者来说,可能%、++、--比较生疏一些,我们重点来学习一下,请看以下代码:
public class ArithmeticOperatorTest01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a + b); //13
System.out.println(a - b); //7
System.out.println(a * b); //30
/*
* 在java语言中10除以3结果不是3.3333..
* 因为java中有一个语法规则:int类型和int类型
* 做运算,最终的结果还是int类型,所以10除以3
* 的结果就是3,这个过程会取整数位。
*/
System.out.println(a / b); //3
/*
* 10对3求余数,3乘3得9,余1。
*/
System.out.println(a % b); //1
/*
* ++和--都是单目运算符,++负责自加1,--负责自减1
* 以下程序重点研究++运算符,--运算符可以依照++运算
* 符进行类推。
*/
int i = 10;
i++;
System.out.println("i = " + i); //11
int j = 10;
++j;
System.out.println("j = " + j); //11
/*
* 根据以上的程序可以得出结论:++可以出现在变量前,也
* 可以出现在变量后,无论是变量前还是变量后,只要执行完
* ++,最终的结果都会让变量自加1。那么++出现在变量前
* 和变量后到底有什么区别呢?请看以下程序
*/
int k = 10;
int m = k++;
/*
* 根据以上结论,++无论是出现在变量前还是变量后,只要++执行
* 变量一定会自加1,那么k变量一定会自加1,所以以下输出k=11
*/
System.out.println("k = " + k); //11
/*
* 以上int m = k++;代码中++和=两个运算符同时存在,
* 那么此时这两个运算符哪个优先级高呢?java语法中是这样
* 规定的,当++运算符出现在变量后,会先做赋值运算,再自
* 加1,所以最后m = 10
*/
System.out.println("m = " + m); //10
int x = 10;
int y = ++x;
//上行代码执行结束后,我们可以确定x变量一定自加1了,所以x=11
System.out.println("x = " + x); //11
/*
* java语法中又有这样的规定,++出现在变量前,会先进行自加1
* 的操作,然后再做赋值运算,所以y = 11
*/
System.out.println("y = " + y); //11
}
}
运行结果如下图所示:
图5-1:运行结果
通过以上代码的学习,我们得知,第一:两个int类型数据进行数学运算之后的结果一定是int类型;第二:++或--可以出现在变量前也可以是变量后;第三:++无论出现在变量前还是变量后,只要执行了++,那么变量必然会自加1;第四:++出现在变量后会先进行赋值运算,再自加1;第五:++出现在变量前会先自加1,再进行赋值运算。那么,大家思考一下以下代码的执行结果是什么?
int c = 100;
System.out.println(c++);
int d = 100;
System.out.println(++d);