java运算符,算术运算符,赋值运算符,关系运算符,逻辑运算符。a++跟++a区别,==跟equals区别,&跟&&区别

运算符分类--个人记录的复习笔记.希望与大家共同进步

运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符赋值运算符关系运算符逻辑运算符位运算符和其他运算符。

1.按功能分类

1.1算术运算符

运算符描述例子
+双目运算符,对运算符两边的操作数进行相加操作1+1=2
-双目运算符,对运算符两边的操作数进行相减操作2-1=1
*双目运算符,对运算符两边的操作数进行相乘操作1*2=2
/双目运算符,对运算符两边的操作数进行相除操作2/2=1
%双目运算符,对运算符两边的操作数进行取余操作10%3=1
++单目运算符,对运算符两边的操作数进行相加操作

++a

a++

--单目运算符,对运算符两边的操作数进行相减操作

a--

--a

 

 

 

 

 

 

 

 

自增(++):将变量的值加1,分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--a)和后缀式(如a--)。前缀式是先减1再使用;后缀式是先使用再减1。

备注:

++a,a++单独使用时效果相同。(--跟++使用相同)

例:结果都为2

public static void main(String[] args) {
        int a = 1;
        a++;
        System.out.println(a);
    }
public static void main(String[] args) {
        int a = 1;
        ++a;
        System.out.println(a);
    }

++a,a++不单独使用时++a先加后用,a++先用后加(--跟++使用相同)

例:

public static void main(String[] args) {
        int a = 1;
        a++;
        System.out.println(a);
        System.out.println(a++);
        int b = a;
        System.out.println(b);
    }

结果输出为2 2 3

public static void main(String[] args) {
        int a = 1;
        a++;
        System.out.println(a);
        System.out.println(++a);
        int b = a;
        System.out.println(b);
    }

结果输出为2 3 3

1.2.赋值运算符(双目)

运算符描述例子
=简单的赋值运算符,将右边操作数的值赋值简单的赋值运算符,将右边操作数的值赋值

a=1

a=b+c

+=复合赋值运算符,将左边操作数指定变量值与右边操作数的值相加后,再赋值给左边操作数指定变量

a+=1等于

a=a+1

-=复合赋值运算符,将左边操作数指定变量值与右边操作数的值相减后,再赋值给左边操作数指定变量

a-=1等于

a=a-1

*=复合赋值运算符,将左边操作数指定变量值与右边操作数的值相乘后,再赋值给左边操作数指定变量

a*=1等于

a=a*1

/=复合赋值运算符,将左边操作数指定变量与右边操作数的值相除后,再赋值给左边操作作数指定变量

a/=1等于

a=a/1

%=复合赋值运算符,将左边操作数指定变量与右边操作数的值取余后,再赋值给左边操作数指定变量

a%=1等于

a=a%1

 

 

 

 

 

 

 

 

 

 

1.3关系运算符(双目)

运算符

描述

例子

==检查两个操作数的值是否相等,如果相等,则条件为真1==1
!=检查两个操作数的值是否相等,如果值不相等,则条件为真

1!=2

>检查左操作数是否大于右操作数,如果是,条件为真

2>1

<检查左操作数是否大于右操作数,如果是,条件为真1<2
>=检查左操作数的值是否大于或等于右操作数的值,如果是,条件为真2>=2
<=检查左操作数的值是否小于或者等于右操作数的值,如果是,条件为真2<=3

 

 

 

 

 

 

 

 

补充知识点:==跟equal()的区别

简单的说

1.==是比较两个值的引用是否相同。equals()是比较两个值是否相同。

2.==是运算符,equals是方法。

3.==相较于equal速度更快

但是需要注意的是:

equals()和==的源码定义:

public boolean equals(Object obj) {

return (this == obj);

} 

由equals的源码可以看出这里定义的equals与==是等效的(Object类中的equals没什么区别),不同的原因就在于有些类(像String、Integer等类)对equals进行了重写。

但是没有对equals进行重写的类就只能从Object类中继承equals方法,其equals方法与==就也是等效的,除非在此类中重写equals。

1.4.逻辑运算符

运算符描述例子
&逻辑与

A&B为假

&&短路与A&&B为假
|逻辑或A|B为真
||短路或A||B为真
逻辑非!(A&B)为真

 

 

 

 

 

 

补充:&(逻辑与)跟&&(短路与)区别

1.当&(逻辑与)运算符两边的表达式的结果都为true时,整个运算结果才为true。而&&(短路与)运算符第一个表达式为false时,则结果为false,不再计算第二个表达式。

2.&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如:0x31 & 0x0f的结果为0x01。

2.按操作数目分类

2.1.单目:

~(按位取反)、! (取非)、-(负号运算符)、 ++(自增)、 - -(自减)

2.2.双目:

大部分都是双目

2.3.三目:

a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;

补充:

1.运算符综述

Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符 的结合性是右到左, x 相当于!(!x).表3.4是Java所有运算符的优先级和结合性。

2.运算符优先级

优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。

3.instanceof

运算符双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值