JAVA:运算符与表达式

 算数运算

. 使用%运算符

Java算术运算符除了通常的加(+)、减(-)、乘(*)、除(\)之外,还包括取模运算(%)和自增(++)及自减(--)运算。+,-,*,/ 比较简单,实验一下即可。

取模运算(%)意为取余数,只能适用于整数及char类型。示例代码如下所示:


    
    
  1. // 输出255除以8所得的余数。
  2. int n = 225;
  3. System.out.println(n % 8); //结果为1

使用“++”和“--”运算符

Java的自增运算符(++)和自减运算符(--)继承自C++,可以使变量的值加1或减1,但其写在变量前和变量后有不同的效果:

  1. 如果写在变量前,表示在使用这个变量之前加1或减1
  2. 如果写在变量后,表示这个变量使用完之后再加1或减1

示例代码如下所示:


    
    
  1. int a = 10, b = 20;
  2. int c1 = a++; // 先将a的值赋给c1,然后a再自加
  3. int c2 = ++b; // 先将b的值自加,然后再赋给c2
  4. System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);
  5. // 输出的结果为: a=11, b=21, c1=10, c2=21

 关系运算

 使用关系运算符

Java中的关系运算符用于判断数据之间的大小关系,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=) 六个运算符。

在实际应用中常常使用,假设现在想实现转帐功能,输入转帐的金额,需要判断所转帐的金额是否大于当前帐户的金额,那结果只有两个,大于或不大于,在java语言中,使用boolean类型来表示这种是否的状态,如果关系成立为true,否则为false。示例代码如下所示:


    
    
  1. int max = 10;
  2. int num = 9;
  3. boolean b1 = max > 15;
  4. boolean b2 = num%2 == 1;
  5. System.out.println(b1); // 结果为false
  6. System.out.println(b2); // 结果为true

 逻辑运算

 逻辑运算

前面的关系运算符是用于比较两个数值之间的大小关系的, 而逻辑运算符是用来进行逻辑运算的,它是建立在关系运算的基础之上的。当两个关系运算需要兼顾考虑时,可以使用逻辑运算符。

逻辑运算符包括:与(&&)、或(||)和非(!)。参与逻辑运算的变量或表达式都是boolean类型,运算结果也为boolean类型。逻辑运算规则如下图 - 4所示:

图- 4

通过分析可以看出:

  1. 当变量b1和变量b2同时为true时,&&表达式为true。
  2. 当变量b1和变量b2有一个为true时,||表达式为false。
  3. !只有一个表达式,当b1为true时,!b1为false,b1为false时,!b1为true。

 使用“&&”运算符

两个boolean变量参与“&&”运算时,只有当两个变量均为true的时,运算结果才为true,否则结果为false。示例代码如下所示:


    
    
  1. int score = 80;
  2. boolean b = score >= 60 && score < 90;
  3. System.out.println(b);
  4. // 结果为true,因为score的值同时满足大于等于60和小于90这两个条件,逻辑表达式“score >= 60”和“score < 90”的结果均为true,所以&&运算的结果即为true。

 使用“||”运算符

两个boolean变量参与“||”运算时,当两个变量有一个为true时,结果即为true,只有当两个变量均为false时结果为false。示例代码如下所示:


    
    
  1. boolean flag = true;
  2. int n = 200;
  3. boolean b1 = flag || (n >= 0 && n < 100);
  4. System.out.println(b1);
  5. // 结果为true,上面这段代码中,表达式“flag || (n >= 0 && n < 100)”的含义是:当flag为true或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为true。

使用“!”运算符

“!”运算相对简单,只有一个boolean变量参与运算,运算的值与该变量相反,变量为true时结果为false,变量为false是结果为true。示例代码如下所示:


    
    
  1. boolean flag = true;
  2. int n = 200;
  3. boolean b = !flag || (n >= 0 && n < 100);
  4. System.out.println(b);
  5. // 结果为false,上面这段代码中,表达式“!flag || (n >= 0 && n < 100)”的含义是:当flag为false或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为false。

 关于“短路逻辑”的问题

Java逻辑运算中的&&和||有短路的特性,当第一个关系表达式就可以判断出整个表达式的结果时,就不会再去判断后面的第二个表达式。

  1. 对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false;
  2. 对于“||”,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。

示例代码如下所示:


    
    
  1. int i = 100, j = 200;
  2. boolean b1 = (i > j) && (i++ > 100);
  3. System.out.println(b1); // 结果为:false
  4. System.out.println(i); // 结果为:100,发生短路,i++不会被执行
  5. boolean b2 = i > 0 || j++ > 200;
  6. System.out.println(b2); // 结果为:true
  7. System.out.println(j); // 结果为:200,发生短路,j++不会被执行

 赋值运算

 使用“=”进行赋值运算

“=”称为赋值运算符,用于对变量赋值。关于赋值运算符,除了将右边的表达式计算出来赋给左边以外还具备如下特点:赋值表达式本身也有值,其本身之值即为所赋之值。示例代码如下所示:


    
    
  1. int num = 18, index;
  2. System.out.println(index = num % 5); // 结果为:3,赋值表达式本身也有值
  3. System.out.println(index); // 结果为:3
  4. int a, b, c;
  5. a = b = c = 100;
  6. // c=100 整个表达式的值为100, 将其赋值给b,同样b=(c=100)整个表达式的值也为100,然后有将这个值赋给了a,所以a 的值也是100。

使用扩展赋值表达式

在赋值运算符”= ”前加上其它运算符,即为扩展赋值运算符,其效率高于赋值运算符,推荐使用,扩展赋值运算符如下图 - 5所示:

图- 5

 字符连接运算

 使用“+”进行字符串连接

“+”除了可以进行算术运算以外,还可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”

当 + 号作用于两个数字类型变量时,是在进行算术运算。

当 + 号两边的变量有一个是字符串类型,即””括起来的时候,则其进行的是字符串的连接,连接后的结果为字符串类型。示例代码如下所示:


    
    
  1. int a = 100;
  2. String msg = "a=" + a;
  3. System.out.println(msg); //a=100,字符串拼接
  4. msg = "" + 100 + 200;
  5. System.out.println(msg); //结果为: 100200,””+100,为字符串100再拼上200为100200
  6. msg = 100 + 200 + "";
  7. System.out.println(msg); //结果为:300,100+200为算术运算结果为300,再加上””为300

 条件(三目)运算

使用条件(三目)运算符

条件运算符又称“三目”运算符,其结构为:boolean表达式 ? 表达式1:表达式2。

条件运算符的规则如下:

  1. 先计算boolean表达式;
  2. 如果boolean表达式的值为true,整个表达式的值为表达式1的值;
  3. 如果boolean表达式的值为false,整个表达式的值为表达式2的值。

示例代码如下:


    
    
  1. int a = 100, b = 200;
  2. int flag = a > b ? 1 : -1; //因为a>b为false,所以整个表达式的值为-1,将其赋给flag,即:flag的值为-1。

 条件(三目)运算符的嵌套

条件运算符可以嵌套使用,所谓嵌套是指在条件(三目)表达式:“boolean表达式 ? 表达式1:表达式2”中的表达式1或表达式2也是条件(三目)表达式,相当于多重判断,示例代码如下所示:


  
  
  1. int a = -3;
  2. String r = a > 0 ? "正数" : (a == 0 ? "0":"负数");
  3. System.out.println(r); //结果为负数,因为 a 的值小于 0,即boolean 表达式的值为 false ,则取问号后第二个表达式的值作为表达式的结果。而问号后的第二个表达式也是一个三目运算符所构成的表达式。因为 a==0 表达式的值为 false,则取“负数”为表达式的结果。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值