04_Java运算符学习

Java运算符学习

运算符包含:

  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算数运算符

算数运算符一览

  • 面试题1:

    • int i = 1;
      i = i++;
      System.out.println(i);//1 先赋值再自增
      //规则使用临时变量:(1)temp = i;(2)i =i + 1;(3)i = temp;
      
  • 面试题2:

    • int i = 1;
      i = ++i;
      System.out.println(i);//2 先自增再赋值
      //规则使用临时变量:(1)i =i + 1;(2)temp = i;(3)i = temp;
      

关系运算符

  • instanceof,检查是否是类的对象
    • "dmm" instanceof String//true
  • 细节说明
    • 关系运算符的结果都是布尔类型(boolean),即true / false
    • 关系运算符组成的表达式,称为关系表达式
    • 比较运算符"==“不要误写为”="

逻辑运算符

  • 用于连接多个关系表达式,运算结果也是一个boolean值
  • 逻辑运算符
  • 短路与&&和逻辑与&
    • 都是两个条件均为true时,结果为true,否则均为false
    • 区别
      • &&短路与:若第一个条件为false,则第二个条件不会判断,最终结果为false
      • &逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
      • 注意:开发中,基本都是使用短路与&&,效率高
  • 短路或||与逻辑或|
    • 都是只要有一个条件成立,结果为true
    • 区别
      • ||短路或:当第一个条件为true,则第二个条件不会判断,最终结果为true
      • |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
      • 注意:开发中,基本都是使用短路或||,效率高
  • 逻辑运算符练习
    • 注意y=true为赋值语句,此时该条件为真,执行z++;同样,x=false为赋值语句,此时该条件为假,最终结果z=50

赋值运算符

  • 基本赋值运算符:=

  • 复合赋值运算符:+=,-=,*=,/=,%=,如a+=b等价于a=a+b

  • 赋值运算符特点:

    • 运算顺序从右到左

    • 赋值运算符的左边只能是变量,右边可以是变量、表达式或常量值

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

      • byte b = 3;
        b += 2;//等价于b = (byte)(b + 2),即字节型常量与整数型常量2相加运算后为整型常量,
        //后自动进行类型转换为byte类型常量
        b = b + 2;//会由于数据类型不兼容而报错,无法从高精度自动转为低精度
        

三元运算符

  • 语法:条件表达式?表达式1:表达式2;

  • 运算规则:

    • 若条件为true,返回表达式1

    • 若条件为false,返回表达式2

    • int a = 10;
      int b = 99;
      int result = a > b ? a++ : b--;
      System.out.println("result=" + result);
      //条件为false,先返回b的值,再执行b自减,result=99
      int result = a > b ? a++ : --b;
      System.out.println("result=" + result);
      //先自减再返回值,result=97
      
  • 三元运算符细节

    • 表达式1、2要为可以赋给接收变量的类型(或可以自动转换),或者强制转换数据类型后再赋值

运算符优先级

请添加图片描述

  • 上图中,上一行运算符总优先于下一行
  • 只有单目运算符、赋值运算符是从右向左运算的
  • 优先级由高到低为:(),{};单目运算符;算术运算符;比较运算符;逻辑运算符;三元运算符;赋值运算符

标识符命名规则与规范

Java对各种变量、方法、类等命名时使用的字符序列称为标识符

标识符命名规则

  • 由26个英文字母,0-9,_或$构成
  • 不能以数字开头
  • 不可以使用关键字和保留字,但可以包含关键字和保留字
    • 关键字:被Java语言赋予了特殊含义,用作专门用途的字符串
      • 关键字中所有字母均小写,如static,interface等
    • 保留字:现有Java版本尚未使用,但以后版本可能作为关键字使用,自己命名时要避免使用这些保留字,如:byvalue,cast,future,generic,inner,operator,outer,rest,var,goto,const等
    • Java中严格区分大小写,标识符长度无限制
  • 标识符不可包含空格

标识符命名规范

  • 包名:多单词组成时所有字母都小写:aaa.bbb.ccc,如:com.dmm.crm
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,从第二个单词开始每个单词首字母大写:xxxYyyZzz,如tankShotGame
  • 常量名:所有字母都大写,多单词时每个单词间用下划线_连接:XXX_YYY_ZZZ,如TAX_RATE

键盘输入语句

用途:接收用户输入的数据;需要用到一个扫描对象,就是Scanner类

使用步骤:

  • 导入该类所在的包import java.util.Scannner
  • 创建该类对象(声明变量)
  • 调用该类相关功能

原码、反码、补码

  • 二进制的最高位为符号位,0为证1为负
  • 正数的原码、反码、补码相同(三码合一)
  • 负数的反码=原码符号位不变,其他位按位取反
  • 负数的补码=其反码+1,负数反码=其补码-1
  • 0的反码、补码都是0
  • java中的数都是有符号的
  • 计算机运算时,都是以补码的方式运算的
  • 当我们看运算结果时,要看它的原码

位运算符

  • Java有七个位运算符:&,|,^,~,>>,<<,和>>>

  • >>为算术右移:低位溢出,符号位不变,并用符号位补溢出的高位

  • <<为算数左移:符号位不变,低位补0

  • >>>为逻辑右移(无符号右移):低位溢出,高位补0

  • int a  = 1 >> 2;//00000001=>00000000=>00000000本质为1 / 2 / 2
    int c  = 1 << 2;//00000001=>00000010=>00000100本质为1 * 2 * 2
    

为逻辑右移(无符号右移):低位溢出,高位补0

  • int a  = 1 >> 2;//00000001=>00000000=>00000000本质为1 / 2 / 2
    int c  = 1 << 2;//00000001=>00000010=>00000100本质为1 * 2 * 2
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值