• 【第一阶段:java基础】第3章:java运算符


    本系列博客是韩顺平老师java基础课的课程笔记,B站:课程链接,吐血推荐的一套全网最细java教程,获益匪浅!

    1. 运算符介绍

    运算符是一种特殊的符号,用以表示数据的运算,赋值和比较

    2. 算数运算符

    在这里插入图片描述

    • 对数值类型的变量进行运算,是java中最多的
    • 除法细节:10/4=2 (向下取整) 10.0/4=2.5 double d=10/4=2.0
    • 取余细节:10%3=1 -10%3=-1 10%-3=1(java中%的本质是:a%b=a-a/bb)10%-3=10-10/(-3)(-3)=1
    • ++细节❤:
      • 当++作为独立语句使用时,++i 和 i++ 是完全等价的
        在这里插入图片描述
      • 当++作为表达式使用时,++i等价于两条语句:先自增再赋值
      • 面试题:把i赋值给i时,会使用一个临时变量temp
        在这里插入图片描述

    3. 关系/比较运算符

    在这里插入图片描述
    关系运算符的结果都是布尔型的,经常用在if语句或者循环语句中

    4. 逻辑运算符

    在这里插入图片描述

    • 用于连接多个表达式,运算结果是布尔值
    • 运算规则
        1. a&b : &叫逻辑与:规则:当a和b同时为true则结果为true,否则为false
        1. a&&b : &&叫短路与:规则:当a和b同时为true则结果为true,否则为false (补充一下全名:& :非短路逻辑与
          && : 短路逻辑与
        1. alb:l叫逻辑或, 规则:当a和b.有一个为true .则结果为true,否则为false
        1. allb:I叫短路或,规则:当a和b,有一个为true则结果为true,否则为false
        1. ~a:叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true
        1. a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
    • 细节
        1. 逻辑与和短路与的区别:两者的运算结果是一样的,但是对于短路与&&而言,如果第一个条件为false,后面的条件不会再判断;对于逻辑与&而言,第一个条件为false时,后面的条件仍然会判断。在这里插入图片描述
        1. 短路或和逻辑或的区别:两者的运算结果是一样的,但是对于短路或而言||,如果第一个条件为true,后面的条件不会再判断;对于逻辑或|而言,第一个条件为true时,后面的条件仍然会判断
          在这里插入图片描述
      • 因此工程上一般用短路与和短路或,因为他们的效率更高。

    5. 赋值运算符

    • 基本赋值运算符:a=10
    • 复合赋值运算符:+=,-=,*= 等
    • 细节
      • 进行复合赋值运算时,实际上会有一个强制类型转换。这个例子中直接用b=b+2就会报错,因为把int类型赋值给byte类型。
        在这里插入图片描述

    6. 三元运算符

    • 基本语法:条件表达式? 表达式1:表达式2
    • 运算规则:如果条件表达式是true,运算结果是表达式1;如果条件表达式为false,则运算结果为表达式2
    • 细节:
        1. 表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)2. 三元运算符可以转成if else语句
          在这里插入图片描述
        1. 面试题
      • 在这里插入图片描述

    7. 运算符优先级

    在这里插入图片描述
    从上至下,优先级逐渐降低,只有单目运算和赋值运算时从右至左的

    8. 标识符的命名规则和规范

    • 标识符:对各种变量,方法还有类等命名时使用的字符序列称为标识符
    • 规则(必须遵守)
      • 由26个英文字母大小写,0-9,_ 或$组成
      • 数字不可以开头
      • 不可以使用关键字(已经被java的设计者使用了)和保留字(以后会被java设计者使用的),但是可以包含关键字和保留字(abclass)
      • 标识符严格区分大小写,长度没有限制
      • 标识符不能包含空格
    • 规范(最好遵守)
      • 包名:由多个单词组成时,所有字母都要小写
      • 类名,接口名:由多个单词组成时,所有单词的首字母大写ThisNewClass
      • 变量名,方法名:多个单词组成时,第一个单词首字母大写,第二个单词每个单词的首字母大写:tankShotGame
      • 常量名:所有字母都要大写,多个单词之间每个单词用下划线连接:TAX_RATE

    9. 键盘输入语句

    1. 引入Scanner所在的包 import java.util.Scanner
    2. 创建 Scanner的对象 Scanner myScanner = new Scanner(System.in);
    3. 接受用户的输出 String name=myScanner .next()

    10. 进制❤

    • 对于整数有4种表示方式
      • 二进制:以0b或者0B开头
      • 十进制
      • 八进制:以0开头表示
      • 十六进制:0-9 A-F(a-f) 以0x或者0X开头
    • 进制转换
      1. 其他进制转十进制:从最低位开始,每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
      1. 十进制转其他进制:将这个数不断除以8,知道商为0为止,然后将没步得到的余数倒过来,就是对应的二进制
      1. 二进制转其他进制
      • 2->8: 从最低位开始,将二进制每三位一组,转成对应的八进制数即可
      • 2->16: 从最低位开始,将二进制每四位一组,转成对应的八进制数即可
      1. 其他进制转二进制
      • 8->2: 将八进制数的每一位转成一个3位的二进制数即可
      • 16->2: 将十六进制的每一位转成一个4位数的二进制数即可

    11. 位运算

    • 原码,反码,补码
      • 二进制的最高位为符号位
      • 正数三码合一都一样
      • 负数的反码=原码符号位不变,其他位取反
      • 负数的补码=反码+1 反码=补码-1
      • 0的反码补码全是0
      • java中所有的数都是有符号的
      • 计算机运算时,以补码的方式进行运算
      • 当我们看结果的时候,要看他的原码(运算结束之后要把补码转为原码)
      • 补码将正数和负数运算统起来
    • 按位与&
    • 按位或|
    • 按位异或^
    • 按位取反~
    • 算术右移>>:符号位不变,低位溢出,高位用符号位补充;每移动1位,相当于除以一次2
    • 算数左移<<:符号位不变,低位补0,每移动1位,相当于乘以1次2
    • 逻辑右移>>>:无符号右移,低位溢出,高位补0。只有逻辑右移没有逻辑左移.

    今天的课程可真算是查漏补缺了~很多收获,还上手做了几个算法题,感觉还可以。

  • 相关阅读:
    JS-运算符
    JavaScript闭包
    idea常用配置 | 快捷注释
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java客户需求管理系统2v0d6
    PyQt学习笔记-获取Hash值的小工具
    什么是安规电容、X电容、Y电容?
    光伏储能MPPT控制系统如何进行浪涌静电保护?
    夏令时及java中常用方法
    学习R语言第六天
    企业如何有效制定企业信息化发展规划?(附信息化模板)
  • 原文地址:https://blog.csdn.net/qq_39328436/article/details/127540146