Java运算符与表达式

来自CloudWiki
跳转至: 导航搜索
  • Java中的语句有多种形式,表达式就是其中一种。

表达式

  • 表达式由操作数与运算符组成。操作数可以是常量、变量,也可以是方法;运算符类似于数学中的运算符号,如“+”、“-”、“*”、“/”、“%”等。
  • 以表达式“z+100”为例,“z”与“100”都是操作数,而“+”就是运算符。
 3.14*r*r , 1+a , x+y-z

运算符

赋值运算符

  • Java提供了丰富的运算符,根据其用途不同,运算符可分为赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符等。
  • 赋值运算符用于为变量指定变量值,使用“=”作为赋值运算符。
  • 通常,使用赋值运算符将一个直接的数据赋值给变量。例如:
int i=5;  //为变量i赋值数据5
  • 也可以使用赋值运算符将一个变量或常量的值赋值给另一个变量。例如:
final double PI = 3.1415;
double a = PI;  //为变量a赋值PI常量表示的取值
double b = a;   //为变量b赋值a变量表示的取值
  • 还可以使用赋值运算符将表达式的值赋值给变量。例如:
final double PI = 3.1415;
double r = 3.5;
double area = PI * r * r;   //将表达式PI*r*r的运算结果赋值给area变量
  • 赋给运算符还可与其他运算符结合,扩展成功能更加强大的赋值运算符。
public class Test {
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     int c = 0;
     c = a + b;
     System.out.println("c = a + b = " + c );
     c += a ;//等价于 c=c+a
     System.out.println("c += a  = " + c );
     c -= a ;//等价于 c=c-a
     System.out.println("c -= a = " + c );
     c *= a ;//等价于 c=c*a
     System.out.println("c *= a = " + c );
     a = 10;
     c = 15;
     c /= a ;//等价于c=c/a
     System.out.println("c /= a = " + c );
 }
}

算术运算符

  • Java支持所有的基本算术运算,包含:+(加法) 、–(减法)、*(乘法)、/(除法)、%(求余数),下面将一一介绍。

加减运算符“+”

  • 将加法运算符“+”的前后两个操作数相加,例如:
double a = 3.5;
double b = 5.1;
double sum = a + b;   //将表达式a+b的运算结果赋值给sum变量
System.out.println(sum);

减法运算符“-”

  • 将减法运算符“–”前面的操作数减去后面的操作数,例如:
int num = 9;
num = num –3 ;   // 将num-3运算结果再赋值给num存放
System.out.println(num);

乘法运算符“*”

  • 将乘法运算符“*”的前后两个操作数相乘,例如:
b = b * 5 ;     // 将b*5运算之后赋值给b存放
a = b *b ;      // 将b*b运算之后赋值给a存放

除法运算符“/”

  • 将除法运算符“/”前面的操作数除以后面的操作数,例如:
a = b / 5 ;     // 将b / 5运算之后的值赋给a存放
c = c / d ;     // 将c / d运算之后的值赋给c存放


思考:

 System.out.println(5 / 0);  //打印值为多少 ?
 System.out.println(5 / 0.0);   //打印值为多少 ?


  • 除法运算符有些特殊,包含如下两种形式:
  • 如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然除法的结果截断取整。此时除数不可以是0,否则将引发除以零异常。例如:
System.out.println(5 / 2);   //输出结果是2,而不是2.5
System.out.println(5 / 0);   //不能执行,引发除以零异常
  • 如果除法运算符的两个操作数有一个是浮点数,或者两个都是浮点数,则计算结果也是浮点数,这个结果就是自然除法的结果。此时允许除数为0或0.0,得到结果是正无穷大或负无穷大。例如:
System.out.println(5 / 2.0);   //输出结果是2.5
System.out.println(5.0 / 2);   //输出结果是2.5
System.out.println(5.0 / 2.0); //输出结果是2.5
System.out.println(5 / 0.0);  //输出结果是Infinity(表示正无穷大)
System.out.println(5 / -0.0); //输出结果是-Infinity(表示负无穷大)

求余数运算符“%”

  • 将余数运算符“%”前面的操作数除以后面的操作数,得到一个整除的结果后剩下的值就是余数。例如:
int num = 10;
num = num % 3 ;   // 将num%3运算之后赋值给num存放
System.out.println(num);  //输出结果:1
  • 由于求余数运算符也需要进行除法运算,因此也包含两种形式:
  • 如果求余数运算的两个操作数都是整数类型,则求余数运算的第二个操作数不能是0,否则将引发除以零异常。例如:
System.out.println(5 % 2);   //输出结果是:1
System.out.println(5 % 0);   //不能执行,引发除以零异常
  • 如果求余数运算的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或0.0,只是求余数运算的结果是非数NaN。
System.out.println(5.5 % 2); //输出结果是:1.5
System.out.println(5.5 % 0); //输出结果是:NaN

自增运算符“++”

  • 划重点)自增运算符就是自己给自己加一
 int i;
 i++ //等价于 i = i+1

这比i=i+1的写法更为简便。

  • 自增运算符有两个要点:一是自增是单目运算符,只能操作一个操作数;二是只能操作单个数值型的变量,不能操作常量或表达式。
  • 自增运算符有两种表现形式:
  • 形式一:自增运算符出现在操作数的左边,先做自增操作,再使用变量
int a = 5;
 //让a先自增,然后执行算术运算
 int b = ++a + 6;
 //输出a的值为6,b的值为12
 System.out.println(a + "\n" + b);
  • 形式二:自增运算符出现在操作数的右边,先使用变量,再做自增操作
int a = 5;
 //让a先执行算术运算,然后自增
 int b = a++ + 6;
 //输出a的值为6,b的值为11
 System.out.println(a + "\n" + b);


++在前先++再运算, ++在后先运算后++

自减运算符“--”

  • 自减运算符也是单目运算,用法与自增运算符++基本相似,只是将操作数的值减1。
  • 自减运算符有两种表现形式:
  • 形式一:自减运算符出现在操作数的左边,先做自减操作,再使用变量
int a = 5;
 //让a先自减,然后执行算术运算
 int b = --a + 6;
 //输出a的值为4,b的值为10
 System.out.println(a + "\n" + b);
  • 形式二:自减运算符出现在操作数的右边,先使用变量,再做自减操作
int a = 5;
//让a先执行算术运算,然后自减
int b = a-- + 6;
//输出a的值为4,b的值为11
System.out.println(a + "\n" + b);

练习:BMI指数计算器

MI,全称为BodyMassIndex,代表身体质量和体质指数,是国际上常用的衡量人体肥胖程度和是否健康的重要标准 ,BMI指数的计算公式为: BMI指数 = 体重(KG)除以身高(M)的平方,请利用Java编写程序,输入用户的身高和体重,能够计算出他(她)的BMI指数来,并将它打印在控制台上。