Java复习知识点四:Java中有哪几种运算符?

Java复习知识点四:

Java中的运算符

Java中有哪几种运算符?

  • 算术运算符
  • 关系运算符(比较运算符)
  • 逻辑运算符
  • 赋值运算符
  • 位运算符
  • 三元运算符

1、算术运算符

算术运算符是对数值类型的变量进行运算
在这里插入图片描述

1.1使用细节

除:

System.out.println(5 / 2);
//输出结果为 2

System.out.println(5.0 / 2);
//输出结果为 2.5

取模(取余):a % b = a - a / b * b

在运算 % 时,看成一个公式!!!
a % b = a - a / b * b

-10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
10 % -3 => 10 - 10 / (-3) * (-3) = 10 - 9 = 1

System.out.println(-10 % 3);// -1
System.out.print1n(10 % -3); //1
system.out.println( -10 % -3);//-1

自增 ( i++)

  1. 作为独立语句使用时

    int 1 = 10;
    i++;	//自增等价于i = i + 1;	=>	i = 11
    ++i;	//自增等价于i =i + 1;	=> 	i =12
    System.out.println( "i=" + i);	//12
    
    
  2. 作为表达式使用时

    /*
    作为表达式使用
    前++∶++i先自增后赋值后++: i++先赋值后自增
    */
    
    int j = 8;
    //int k = ++j;	//等价j=j+1;k=j;
    int k = j++;	//等价k =j;j=j+1;
    System.out.println("k=" +k+“j=+j);	//89
    
    

经典例题

int i = 1;
i = i++;
System.out.println(i);//输出为 1

int i = 1;
i = ++i;
System.out.println(i);//输出为 2

2、关系(比较)运算符

  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false
  2. 关系表达式经常用在if结构的条件中或循环结构的条件中
    在这里插入图片描述

3、逻辑运算符

3.1运算规则:

对于短路与(&&)和 短路或(||),如果第一个条件为false(true),后面的条件将不会再执行判断 效率高

对于逻辑与(&)和 逻辑或(|),如果第一个条件为false(true),后面的条件也会再执行判断 效率低

!逻辑非:取反

^ 逻辑异或:不同为true,相同为false

开发中基本使用 短路


4、赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量

  1. 基本赋值运算符

    =

  2. 复合赋值运算符

    += 、 -= 、 *= 、/= 、%=

4.1 赋值运算符特点:
  1. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

  2. 复合赋值运算符会进行类型转换

    byte b = 3;
    b += 2;//等价于 b = (byte)(b + 2);
    b++; //等价于 b = (byte)(b + 1);
    
    //如果像下面这样写,会报错
    byte b = 3;
    b = b + 2;
    

5、位运算符

分为两组:


  1. 按位与 &:两位全为1,结果为1,否则为0
  2. 按位或 |:两位有一个为1,结果为1,否者为0
  3. 按位异或 ^ :两位不相同,结果为1,相同为0
  4. 按位取反~:0 - >1,1 -> 0

  1. 算术右移 >>:本质是 除以2
    • 正数,右移直接丢弃最低位,在高位补对应个数的0;
    • 负数,右移直接丢弃最低位,在高位补对应个数的1;
  2. 算术左移 <<:本质是 乘以2
    • 正数和负数,左移直接丢弃最高位,在低位补对应个数的0;
  3. 逻辑右移(无符号右移):右移直接丢弃最低位,在高位补对应个数的0,即使最高位原来是1;

按位与&计算过程:
在这里插入图片描述
按位取反~计算过程:
在这里插入图片描述


6、三元运算符

基本语法:

条件表达式 ? 表达式1 : 表达式2;

运算规则:

  1. 如果条件表达式为true, 运算后的结果是表达式1;
  2. 如果条件表达式为false,运算后的结果是表达式2;

真1假2

例:

int a = 10;
int b = 11;
int result = a > b ? a++ : b--;
System.out.println(result);//输出11
6.1使用细节:

表达式1和表达式2要为可以接收的类型的变量(或者可以自动类型转换的变量)

错误例子:

int a = 3;
int b = 4;
int c = a > b ? 1.1 : 2;
//错误  double类型的数值1.1 不可赋值给int类型的变量c
//可以强转 int c = a > b ? (int)1.1 : 2;

练习

实现三个数的最大值
int n1 = 23;
int n2 = 33;
int n3 = 43;

int max = (n1 > n2 ? n1 : n2) > n3 ? 
    		(n1 > n2 ? n1 : n2) : n3;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值