JAVA 运算符

运算符介绍

是一种特殊符号,用于数据运算、赋值、比较

  • 算术运算符

  • 赋值运算符

  • 关系运算符

  • 逻辑运算符

  • 位运算符

  • 三元运算符

算术运算符
  • 介绍

对数值类型进行运算,使用较多

  • 算术运算符一览

  • 案例演示

  1. +,-,*,/,%。++,--

  1. 自增:++

作为独立语句使用:

++i:先自增后赋值

i++:先赋值后自增

  1. --,+,-,*同理

代码: ArithmeticOperator.java

  • 面试题与练习

ArithmeticOperatorExercise01.java

ArithmeticOperatorExercise02.java

关系运算符
  • 介绍

结果都是布尔类型;关系表达式经常在if结构或循环结构中出现。

  • 关系运算符一览

  • 案例演示

RelationalOperator.java

  • 细节说明

  1. 关系运算结果是布尔型

  1. 关系运算符组成的表达式,我们称为关系表达式

  1. 比较运算符"==" 不能写成"="

逻辑运算符
  • 介绍

用于连接多个条件(多个关系表达式),最终结果是布尔值

  • 逻辑运算符一览

分为两类,分别为

  1. 短路与&&,或||,取反!

  1. 逻辑与&,或|,逻辑异或^

逻辑运算规则:

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

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

  1. a|b:|叫逻辑或:当a和b,有一个为true则结果为true,否则为false

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

  1. !a:叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true

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

  • 短路与和逻辑与

  • 区别

  1. &&短路与:如果第一个条件为假,则第二个条件不会判断,效率高

  1. &逻辑与:不管第一个条件是不是假,第二个都要判断,效率低

  1. 开发中基本都使用短路,效率高

  • 案例

LogicOperator01.java

  • 短路或和逻辑或

  • 区别

  1. &&短路与:如果第一个条件为真,则第二个条件不会判断,效率高

  1. &逻辑与:不管第一个条件是不是真,第二个都要判断,效率低

  1. 开发中基本都使用短路,效率高

  • 案例

LogicOperator02.java

  • 取反操作

  • 异或操作

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

  • 取反和异或案例演示

InverseOperator.java

  • 练习

答案:6,6; 6,5; 11,6; 11,5;

如果有赋值语句,则先赋值,再看这个变量是否为真

答案:50

赋值运算符
  • 介绍

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

  • 赋值运算符分类

  1. 基本赋值运算符 '=' int a = 10;

  1. 复合赋值运算符

+=,-=,*=,/=,%=

a += b; [等价于a = a + b;]

a -= b; [等价于a = a - b;]

其他同理

  • 案例演示

AssignOperator.java

  • 赋值运算符的特点

  1. 运算顺序从右往左 int num = a+b+c,先计算a+b+c,然后赋给num

  1. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量:int n = 20; int n = 2*2+1; int n = a;

  1. 复合赋值运算符等价于下面效果

a+=3;等价于a=a+3;

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

byte b = 2; b += 3; b++

三元运算符
  • 基本语法

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

运算规则

  1. 条件表达式为真,则运算后的结果是表达式1;

  1. 条件表达式为假,则运算后的结果是表达式2;

  • 案例演示

TernaryOperator.java

  • 细节说明

  1. 表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)

  1. 三元运算符可以转换成if--else语句

  • 练习

TernaryOperatorExercise.java

运算符优先级
  • 不同运算符有不同优先级,也就是表达式的运算顺序

  • 只有单目运算符、赋值运算符是从右向左计算的

  • 下表从上到下优先级降低

用久了自然熟悉

标识符命名规则和规范
  • 介绍

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

  1. 凡是自己可以起名字的地方都叫标识符

  • 命名规则

  1. 由字母(大小写),0-9,_或$组成

  1. 数字不能开头

  1. 不能使用关键字和保留字,可以包含

  1. java严格区分大小写,长度无限制

  1. 标识符不能包含空格

  • 练习

  • 命名规范

  1. 包名:多个单词组成时所有字母小写。比如:com.ly.pro

  1. 类名、接口名:多个单词组成时,所有单词首字母大写。比如:MyFirstProject

  1. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个开始之后每个单词首字母大写。例如:newFirstObject

  1. 常量名:所有字母大写。多单词时每个单词用下划线连接。例如:SCREEN_WIDTH

  1. 其他参考文档

关键字
  • 定义:被Java语言赋予了特殊含义,用作专门用途

  • 特点:关键字所有字母都小写

保留字
  • 当前版本尚未使用,后续版本可能作为关键字使用

键盘输入语句
  • 介绍

在编程中,需要用户输入的数据,可以使用键盘输入语句来获取。Input.java,需要一个扫描器,也就是Scanner

  • 步骤:

  1. 导入该类所在包,java.util.*

  1. 创建该类对象(声明变量)、

  1. 调用里面的功能

  • 案例演示

Input.java

进制
  • 介绍

对于整数,有四种表示方式:

  1. 二进制:0,1,满二进一,以0b或0B开头

  1. 十进制:0-9,满十进一

  1. 八进制:0-7,满八进一,以0开头

  1. 十六进制:0-9和a(10)-f(15),满十六进一,以0x或0X开头,A-F不区分大小写。

  • 案例说明

BinaryTest.java

  • 图示

进制的转换
  • 二进制转十进制

  1. 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数- 1)次方,然后求和。

  1. 案例:将0b1011转换成十进制

  1. 0b1011 = 1 * 2的(1-1)次方 + 1 * 2的(2-1)次方+ 0 * 2的(3-1)次方 + 1 *2的(4-1)次方= 1+2+0+8 = 11

  • 八进制转十进制

  1. 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数- 1)次方,然后求和。

  1. 案例:将0234转换成十进制

  1. 0234 = 4 * 8^0 + 3 * 8^1 + 2 * 8^2 = 4+24+128 = 156

  • 十六进制转十进制

  1. 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数- 1)次方,然后求和。

  1. 案例:将0X23A转换成十进制

  1. 0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 10 + 48 + 512 = 570

  • 练习

  • 十进制转成二进制

  1. 规则:规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

  1. 案例:请将34转成二进制

从下往上填

  • 十进制转八进制

  1. 规则:规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

  1. 案例:131转八进制

  1. 方法同上

  • 十进制转十六进制

  1. 规则:规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

  1. 案例:237转八进制

  1. 方法同上

  • 练习

  • 二进制转八进制

  1. 规则:从低位开始,将二进制每三位一组,转成对应八进制数即可,首位不足补0。

  1. 案例:0b11010101转八进制

  1. 0b11(3) 010(2) 101(5) => 0325

  • 二进制转十六进制

  1. 规则:从低位开始,将二进制每四位一组,转成对应八进制数即可,首位不足补0。

  1. 案例:0b11010101转八进制

  1. 0b1101(D) 0101(5) => 0XD5

  • 练习

  • 八进制转二进制

  1. 规则:将八进制数每1位,转成对应的一个3位二进制数即可。首位0可删除

  1. 案例:0237转成二进制

  1. 02(010) 3(011) 7(111) => 0b10011111

  • 十六进制转二进制

  1. 规则:将八进制数每1位,转成对应的一个4位二进制数即可。首位0可删除

  1. 案例:0x23b转成二进制

  1. 0x2(0010) 3(0011) b(1011) => 0b1000111011

  • 练习

原码、反码、补码
  1. 二进制的最高位是符号位:0是正数,1是负数

  1. 正数的原码,反码,补码都一样(三码合一)

  1. 负数的反码=它的原码符号位不变,其他位取反

  1. 负数的补码=它的反码+1,负数的反码=负数的补码-1

  1. 0的反码补码都是0

  1. java没有无符号数

  1. 计算机运算时,都是以补码的方式来运算的

  1. 当我们看运算结果的时候,要看它的原码

位运算
  • 七个位运算(&,|,^,~,>>,<<,>>>)

  • 按位与&,按位或|,按位异或^,按位取反~,运算规则如下

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

算术左移<<:符号位不变,低位补0

>>>逻辑右移,也叫无符号右移:低位溢出,高位补0

特别说明:没有<<<符号

  • 案例

BitOperator.java

作业

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值