第三章: 运算符

1. 运算符介绍

1.1 运算符介绍

  • 运算符是一种特殊的符号,用于表示数据的运算、赋值和比较。
  • 常用运算符

算数、关系(比较运算符)、逻辑、赋值、位运算符、三元。

2. 算数运算符

  • 2.1 介绍

  • 主要是对数值类型的变量进行运算。
  • 重点
    | 运算符 | 运算 | 范例 | 结果 |
    | :—: | :—: | :—: | :—: |
    | ++ | 自增(前):先运算再取值| a = 2;b = ++a;| a = 3; b = 3|
    ||自增(后):先取值再运算|a = 2; b = a++;| a = 3; b =2|
    | – | 自减(前):先运算再取值| a = 2; b= --a;| a = 1; b = 1|
    ||自减(后):先取值再运算|a = 2; b = a–;| a = 1; b =2|
  • 2.2 重点注意

  • 除法注意
double d1 = 10 / 4;  //结果是2.0 而不是2.5。 
  • 取余的本质

    底层取模公式 a % b = a - (强转int)a / b * b

int a1 = 10 % 3; // a1 = 1;
int a2 = -10 % 3;// a2 = -1;
int a3 = 10 % -3; // 结果还是1;
// 按照公式  10 % -3 = 10 - 10 / (-3) * (-3)
  • 自增自减

    如果自增自减独自使用等价于i = i + 1 。
    作为表达式使用:前++ :先自增后赋值,后++ : 先赋值后自增。

int n1 = 8;
int n2 =  ++n1; // 等价于①n1 = n1 + 1; ② n2 = n1;
  • 2.3相关面试题

int i = 1;
i = i ++;
System.out.println(i);   // 请问: i 等于多少?
// 解析: 在jvm执行时,遇到i = i ++,会使用一个临时变量, 执行过程如下:
int temp = i; // 使用临时变量,将i赋给它。
i = i + 1; // i 加一
i = temp;  // 将temp的值赋给 i。  所以结果是1.

3. 关系运算符

  • 3.1 介绍

  • 关系运算符结果都是Boolean型。
  • 3.2 细节

  • 关系运算符组成的表达式,我们称为关系表达式。
  • 不要写成 = 。

4. 逻辑运算符

  • 4.1 介绍

  • 用于连接多个条件(多个关系表达式)结果也是boolean
  • 4.2 包含成员

  • 与(&):全真为真,有假为假。
  • 或 (|): 有真为真,全假为假。
  • 短路与,只要前边表达式为假后边的表达式就不执行。
  • 短路或,只要前边表达式为真后边的表达式就不执行。
  • 异或 (^): 相同为假,不同为真。 都是true或都是false为假,否则就是真的。
  • 4.3 练习题

int x = 5;
int y = 5;
if(x++ == 6 & ++y = 6){
    x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=6,y=6
int x = 5;
int y = 5;
if(x++ == 6 && ++y = 6){
    x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=6,y=5
int x = 5;
int y = 5;
if(x++ == 5 | ++y = 5){
    x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=11,y=6
int x = 5;
int y = 5;
if(x++ == 5 || ++y = 5){
    x = 11;
}
System.out.println("x = "+x + ",y = "+y); // x=11,y=5

练习二

boolean x = true;
boolean y = false;
int z = 46;
if( (z ++ == 46) && (y = true) ) z++;
if( (x = false) || (++ z = 49) ) z++;
System.out.println("z = "+z ); // 48

5. 赋值运算符

  • 5.1 介绍

  • 赋值运算符,就是将某个运算后的值赋给指定的变量。
  • 使用
int a = 20;
boolean b =false;
if( b = true){
System.out.println("b = "+b );    // b = true
}
  • 5.2 赋值运算符的特点

n += 1; // n = n +1;

  • 从右向左
int num = a + b + c;
  • 赋值运算符会进行类型转换
byte b = 2;
b += 2;  // 编译会通过。 相当于 b = (byte)(b + 2); 
// 同样的 b++也会编译通过。

6. 三元运算符

  • 6.1 基本语法

条件表达式 ? 执行语句1 : 执行语句2;

  • 6.2 使用细节

  • 执行语句1和2要是结果可以赋值给的类型(或者可以自动转换的:小转大)
int result = 2>3 ? 2+3 : 3-2;
  • 可以和if–else–之间相互转换。

7. 运算符优先级

  • 7.1 排序详情(从上到下)

操作
(),{} 等
单目运算 ++ --等
算数运算符
位移运算符
比较运算符
逻辑运算符
三元运算符
赋值运算符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值