Java笔记3 运算符

3.1 算数运算符

  • 取模 %
    • 公式:a % b = a - a / b * b
    • 当a是小数时:a % b = a - (int)a / b * b
  • 自增 ++
    • int j = 8;
    • int k = ++j; //等价j = j + 1; k = j; k = j = 9
    • int g = j++; //等价g = j; j = j + 1; g = 8, j = 9
    • 在这里插入图片描述

3.2 关系运算符

  • instanceof:是否是类的对象

3.3 逻辑运算符

  • a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false

  • a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false

    • &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
    • & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
  • a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false

  • a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false

    • ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
    • | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
  • !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true

  • a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

3.4 三元运算符

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

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

3.5 运算符优先级

上一行运算符总优先于下一行

在这里插入图片描述

3.6 关键字与保留字(区别)

  • 关键字:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)
    • 特点:关键字中所有字母都为小写
  • 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用
    • 如: byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、goto、const

3.7 键盘输入语句

使用java.util中的Scanner类

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

String name = sc.next(); //姓名

int age = sc.nextInt();  //年龄

double sal = sc.nextDouble();  //薪水

3.8 进制

  • 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
  • 十进制:0-9 ,满 10 进 1。
  • 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
  • 十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。

3.9 原码、反码、补码

在这里插入图片描述

3.10 位运算

3.10.1 运算规则

在这里插入图片描述

  • 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
  • 算术左移 <<: 符号位不变,低位补 0
  • >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
  • 特别说明:没有 <<< 符号

3.11 练习

public class 位运算{
    public static void main(String []args) {
        int a=1>>2; // 1 向右位移 2 位
        int b=-1>>2;//算术右移
        int c=1<<2;//算术左移
        int d=-1<<2;//
        int e=3>>>2;//无符号右移
        //a,b,c,d,e 结果是多少
        System.out.println("a="+a);     //0
        System.out.println("b="+b);     //-1
        System.out.println("c="+c);     //4
        System.out.println("d="+d);     //-4
        System.out.println("e="+e);     //0
    }
}

  • 2 & 3 = ? //用补码运算

    • 2的补码:00000000 00000000 00000000 00000010
    • 3的补码:00000000 00000000 00000000 00000011
    • 按位与&:00000000 00000000 00000000 00000010
    • 补码转换为原码:00000000 00000000 00000000 00000010
    • 结果为2
  • ~-2 = ?

    • -2的原码:10000000 00000000 00000000 00000010
    • -2的反码:11111111 11111111 11111111 11111101
    • -2的补码:11111111 11111111 11111111 11111110
    • 按位取反:00000000 00000000 00000000 00000001
    • 补码转换为原码:00000000 00000000 00000000 00000001
    • 结果为1
  • ~2 = ?

    • 2的原码: 00000000 00000000 00000000 00000010
    • 2的补码: 00000000 00000000 00000000 00000010
    • 按位取反:11111111 11111111 11111111 11111101
    • 补码转换为反码:11111111 11111111 11111111 11111100(负数补码减一为反码)
    • 反码转换为原码:10000000 00000000 00000000 00000011
    • 结果为-3

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值