零基础Java第三期:运算符

目录

一、算术运算符

1.1. 基本四则运算符:加减乘除模(+ - * / %)

1.2. 增量运算符 += -= *= %=

1.3. 自增++/自减--操作符

二、关系运算符

三、逻辑操作符

3.1. &&

3.2. ||

3.3. 逻辑非!

3.4. 短路求值

四、位操作符

4.1. 按位与&:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

4.2. 按位或:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

4.3. 按位取反~ :如果该位为 0 则转为 1, 如果该位为 1 则转为 0

4.4. 按位异或^:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

五、条件运算符

六、 运算符的优先级


      各位小伙伴们,距离上一篇博客发布已经过去了10天。因为这几天学校的课比较多,一直没来得及更新。博主只能在周六周日写博客了。下面话不多说,开始今天的博客之旅。

一、算术运算符

1.1. 基本四则运算符:加减乘除模(+ - * / %)

public class Main{
   public static void main(String[] args){
       int a=20;
       int b=10;
       System.out.println(a+b);
       System.out.println(a-b);
       System.out.println(a*b);
       System.out.println(a/b);
       System.out.println(a%b);
    }
}

注意:int / int 结果还是int类型,而且会向下取整

int a = 3;
int b = 2;
System.out.println(a / b);
double d = a*1.0 / b;
System.out.println(d);

都是二元运算符,使用时必须要有左右两个操作数,且右操作数不能为0。

1.2. 增量运算符 += -= *= %=

此类操作符会将结果赋值给左操作数。

int a=2;
a+=2;//a=a+2
System.out.println(a);

int b=2;
b-=1;//b=b-1
System.out.println(b);

int c=2;
c*=3;//c=c*3
System.out.println(c);

int d=2;
d/=2;//d=d/2
System.out.println(d);

1.3. 自增++/自减--操作符

int a = 1;
a++;//后置++,表示给a的值加1,此时a的值为2
System.out.println(a++);//先使用变量原来值,表示式结束时给变量+1,所以打印出来的结果为2
System.out.println(a);//输出结果为3


++a;//前置++,表示给a的值+1
System.out.println(++a);//前置++是先给变量+1,然后使用变量中的值,因此输出5
System.out.println(a);// 输出5

       相信很多小伙伴在学自增++/自减--操作符时,经常搞混。如果单独使用时,前置++和后置--没有区别;如果混合使用时,先+1,然后使用变量+1之后的值,后置++先使用变量原来的值,表达式 结束时给变量+1。

二、关系运算符

关系运算符主要有六个:

==:判断相等;   !=:判断不相等;  >,<,>=,<=,计算结果是true或false。

int a=1;
int b=2;
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a>=b);//false
System.out.println(a<=b);//true

需要多次判断时,不能连着写。

三、逻辑操作符

主要有三个&&,||,!,运算结果都是true和false。

3.1. &&

       语法规则:表达式1&&表达式2,左右都是boolean类型。两个表达式都为真,结果才是真,只要有一个是假,结果就是假。

表达式1表达式2结果
int a=1;
int b=2;

System.out.println(a==1 && b==2);//左右都为真,结果为真
System.out.println(a==1 && b!=2);//右为假,结果为假
System.out.println(a!=1 && b==2);//左为假,结果为假
System.out.println(a!=1 && b!=2);//左右都为假,结果为假

3.2. ||

       语法规则:表达式1 || 表达式2,表达式必须是boolean类型的结果。左右表达式只要有一边为真,结果就是真。

表达式1表达式2结果
int c=4;
int d=5;

System.out.println(c==4||d==5);//左右都为真,结果为真
System.out.println(c==4||d!=5);//左为真,结果为真
System.out.println(c!=4||d==5);//右为真,结果为真
System.out.println(c!=4||d!=5);//左右都为假,结果为假

3.3. 逻辑非!

语法规则:!表达式。真变假,假变真。

表达式结果
int e=6;

System.out.println(!(e!=6));
System.out.println(!(e==6));

3.4. 短路求值

&&和||遵循短路求值原则

System.out.println(1>2&&1/0==0);
System.out.println(1>0||1/0==0);

      我们可以看到编译器不会报错,这是因为&&左侧表达式为假,或||左侧表达式为真,无需计算右侧表达式。& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值。

System.out.println(1>2 & 1/0==0);
System.out.println(1>0 | 1/0==0);

此时程序会报错

四、位操作符

     Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位. 字节是最小的存储单位,每个字节是由8个二 进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位 的每一位依次进行计算。 

int a=10;
int b=20;
System.out.println(a&b);
System.out.println(a|b);

4.1. 按位与&:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

10的二进制是1010,20的二进制为0001 0100

1000001010
2000010100
&00000000

此结果为0的二进制。

4.2. 按位或:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

1000001010
2000010100
|00011110

结果为30的二进制。

4.3. 按位取反~ :如果该位为 0 则转为 1, 如果该位为 1 则转为 0

int c = 0xf;
System.out.printf("%x\n", ~c);

4.4. 按位异或^:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

int e=0x1;
int f=0x2;
System.out.printf("%x\n",e^f);

如果两个数相同,则异或的结果为0。 

五、条件运算符

只有一个 :表达式1?表达式2:表达式3

       当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值。 

int a=1;
int b=2;
int min=a>b?b:a;
System.out.println(min);

     表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换。表达式不能单独存在,其产生的结果必须要被使用。

六、 运算符的优先级

       在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如:* 和 / 的优先级要高于 + 和 - ,有些情况下稍不注意,可能就会造成很大的麻烦。运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值