JAVA基础运算符(JAVA笔记第六期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解

基本运算符(??表示还没学到)

  • 算术运算符:" +,-,*,/,&,++,-- " (加、减、乘、除、取余数、自增、自减)
  • 赋值运算符 =
    举例
    int a = 10
    意思是将10赋值给a(等号后面的赋值给等号前面的)
  • 关系运算符:>,<,>=,<=,==,!= instanceof(大于、小于、大于等于、小于等于、等于、不等于、??)
  • 逻辑运算符:&&,||,!【与(and)、或(or)、非(取反)】
  • 位运算符(了解):&,|,^,~,>>,<<,>>>{与(and)、或(or)、异或、非(取反)、右移、左移、??】
  • 条件运算符 ? :
  • 扩展赋值运算符:+=, -=,*=,/=

算术运算

二元运算

二元运算符指的是只能将两个数进行运算的运算符

        int a = 10;
        int b = 20;
        int C = 21;
        //ctrl+D 复制当前行到下一行(非常实用!!)(IDEA的功能)
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(C%a);//    C  /  a   相当于21/10取余数
        System.out.println(a/b);

输出

30
-10
200
1
0

为什么a/b结果是0而不是理所应当的“0.5”呢?
那是因为输出类型为Int类型只能取整数部分精度不够
因此想要得到0.5就要进行强制类型转换
改成这种

System.out.println(a/(double)b);

即可得到

30
-10
200
1
0.5
多元运算

还是举例

        long a1 = 123123123123123L;
        int b1 = 123;
        short c1 =10;
        byte d1 = 8;

        System.out.println(a1+b1+c1+d1);//Long类型
        System.out.println(b1+c1+d1);//int类型
        System.out.println(c1+d1);//short类型

输出

123123123123264
141
18

注意! 在进行多个不同类型的数运算的时候,结果会是数字最靠前的类型
如果想把结果变为String类型
即如下所示
System.out.println((String) c1+d1);
则会报错:不可转换的类型;无法将 ‘short’ 转换为 ‘java.lang.String’

一元运算:自增、自减运算符

自增运算符的用法有两种
一种是用a++,一种是++a(自减运算符也是同理)
下面介绍自增运算符的使用效果

        int a = 3;
        int b = a++;


        System.out.println(a);


        int c = ++a; 
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

输出结果为

4
5
3
5

原因

int b = a++;  //即为执行完这行代码后,先给b赋值,然后再自增(即a=a+1)
int c = ++a;   //即为执行完这行代码后,先自增(即a=a+1),然后再给c赋值
//二者都进行了赋值与自增,只是顺序不同

关系运算

关系运算返回的结果只有两种:true、false(即为布尔值)

        int A = 10;
        int B = 20;
        System.out.println(A>B);
        System.out.println(A<B);
        System.out.println(A>=B);
        System.out.println(A<=B);

输出结果

false
true
false
true

逻辑运算

通过举例来理解
先赋值

boolean a = true;
boolean b = false;

逻辑运算分为三种:逻辑运算、逻辑运算、逻辑运算

        System.out.println(a&&b);//逻辑与运算:(变量)全真为真,有假为假
        System.out.println(a||b);//逻辑或运算:(变量)有真为真,全假为假
        System.out.println(!(a&&b));//逻辑非运算:假变真,真变假

输出结果

false
true
true

短路运算(逻辑运算中的特例):若有发现有一个变量为假,则不会执行这个变量之后的代码
证明

         int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);

输出结果

false
5

如果没有进行短路运算则后面的c++会被执行
而c++被执行的话则c会自增为6
而结果c依然是5
证明“c++<4”并没有被执行
即证明了有短路运算这种运算类型

位运算(针对二进制)

位运算符中的“&,|,^,~”与逻辑运算符有点相似

A = 0011 1100
B = 0000 1101
A&B(通过比较二进制的数的相同位次来输出,如两个变量同位次的数全是1才输出1,否则为0)
(所以A&B输出结果:0000 1100A|B(通过比较二进制的数的相同位次来输出,如两个变量同位次的数全是0才输出0,否则为1)
(所以A|B输出结果:0011 1101~B(将B0换成11换成0然后输出)
A^B(通过比较二进制的数的相同位次来输出,如两个变量同位次的数相等才输出0,否则为1)
(所以A^B输出结果:0011 0001

任何数和 0 做异或运算,结果仍然是原来的数,即 a^0=a。
任何数和其自身做异或运算,结果是 0,即 a^a=0。
异或运算满足交换律和结合律,即 aba=baa=b(aa)=b^0=b
异或还有很多使用的性质,点击这里看大佬


位运算符还有两个:<<、>>
<<和>>的作用是先将一个数转换为二进制,再将二进制中的有效数字(即为1)向左(或右)平移n个位次
举例

        System.out.println(3<<2);

效果:首先将数转换为二进制:3→ 0000 0011
再向左平移2个位次→ 0000 1100
最后将这个数以十进制的进制输出
输出结果

12

位运算优点:因为是针对于底层运算,所以效率高

扩展赋值运算

扩展赋值运算符是为了便捷而使用的,其意义也简洁明了
举例

        int a = 10;
        int b = 20;
        a+=b;//意义:a=a+b
        System.out.println(a);
        a-=b;/意义:a=a-b
        System.out.println(a);

输出结果

30
10

扩展:字符串连接符: +
举例来说明

        int a = 10;
        int b = 20;
        System.out.println(a+b+"aa"+a*b);

输出结果

30aa200

原因及说明
首先:字符串连接符遵从基本的数学运算法则(即乘除优先,括号里的运算优先等)
其次,当开始进行加减运算时如果+号连接着一个字符串类型(即String类型)则会将该字符串后面的变量变为String类型
而后面的+的意义则变为了连接而不是数学的加运算

条件运算(三元运算符)

条件运算符是一种三元运算符,其使用的基本格式为
X ? Y : Z

含义:如果X==true,则结果为Y,否则结果为Z

可以不用,但不能不会

举例

        int score = 80;
        String type = score <60 ? "不及格" : "及格";
        System.out.println(type);

输出结果为

及格

最后补充

1.由于运算有优先级而括号优先级高,所以为了不必要的麻烦可以多打一些括号

2.这是萌新自己自学总结的笔记(所以有些东西还没学到),如果想学习得更透彻的话还是请去看大佬的讲解↓ ↓ ↓
想要知道JAVA运算符的优先级及更多的运算符点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值