3.复习-Java运算符

Java运算符

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

1.算术运算符

2.赋值运算符

3.关系运算符[比较运算符]

4.逻辑运算符

5.位运算符[需要二进制基础]

6.三元运算符

算术运算符

算术运算符是对数值类型的变量进行运算的,在java程序中使用的非常多

image-20220706183739912

image-20220706183907287

面试题:

1.⭐

image-20220706184037167

2.⭐

image-20220706184127774

关系运算符(比较运算符)

1.关系运算符的结果都是boolean型,也就是要么是true,要么是false

2.关系表达式 经常在if结构的条件中或循环结构的条件中

image-20220706184344644

细节说明:

1.关系运算符的结果都是boolean型。

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

3.比较运算符“= =”不能写成“=”

逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。

说明逻辑运算规则:

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

2.a && b : && 叫短路与 : 规则:当 a 和 b 同时为true,则结果为true,反之为false

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

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

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

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

细节:

1.⭐**&&与&中,&&如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高;&不管第一个条件是否为false,第二个条件都要判断,效率低。**

2.开发中,我们使用的基本是短路与&&,效率高

3.||与|中,||如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高;|不管第一个条件是否为true,第二个条件都要判断,效率低。

4.开发中,我们基本是用的短路或||,效率高

赋值运算符

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

两大类:

基本赋值运算符:=

复合赋值运算符:+= , -= , *= , /= , %=等 例如:a += b;[a = a + b;]

特点:

1.运算顺序从右往左(先执行赋值运算符的右边)

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

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

例:byte a = 3;

​ b += 2;//等价于 b = (byte)(b+2);

三元运算符(是一个整体)

基本语法:

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

运算规则

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

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

使用细节:

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

2.三元运算符可以转为if–else语句

运算符优先级

image-20220706184616794

1.表中运算优先级上一行总优于下一行。

2.只有单目运算符、赋值运算符是从右向左运算的。

优先级:

1.() , {}等

2.单目运算 ++ –

3.算数运算符

4.位移运算符

5.比较运算符

6.逻辑运算符

7.三元运算符

8.赋值运算符

进制

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

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

2.十进制

3.八进制:以数字0开头表示

4.十六进制:0-9以及A(10)-F(15)。以0x或0X开头表示。此处A-F不区分大小写

进制的转换(基本功)

第一组(其他进制转十进制):

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

第二组(十进制转其他进制):

二进制:同理八进制

八进制:将该数不断除以8,直到商为0为止,然后把每步得到的余数倒过来

十六进制:同理八进制

第三组(二进制转八 、十六):

八进制:从低位开始将二进制数每三位一组,转为对应的八进制数即可

十六进制:从低位开始将二进制数每四位一组,转为对应的八进制数即可

第四组(八、十六转二进制):

八进制:将八进制数每1位,转成对应的一个3位的二进制数即可。

十六进制:将十六进制每1位,转成对应的一个4位的二进制数即可。

原码、反码、补码(重点、难点)

精简几句话

对于有符号的而言:

1.二进制的最高位是符号位:0表示正数,1表示负数

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

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

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

5.0的反码、补码都是0

6.java没有无符号数,换而言之,java中的数都是有符号的

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

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

位运算符

java中有7个位运算(&、|、^、~、>>、<<、>>>)

移位运算符的右操作数要完成模32的运算。

public static void main(String[] args) {
  System.out.println(1 <<35);//8
  System.out.println(1<<3);//8
}

>>>运算符会用0填充高位,不存在<<<运算符

image-20220706184714554

image-20220706201533872

image-20220706185245485

image-20220706202121701