Java基础4运算符

运算符

Java语言支持如下运算符:

  • 算术运算符:+,-,*,/,%(Java中叫模运算即求余),++,–

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==,!=instanceof.

    !=:bu不等于。

  • 逻辑运算符:&&,||,!。

    ​ 与 或 非

  • 位运算符:&,|,^,~,>>,<<,>>>(只做了解)

  • 条件运算符: ? :

  • 拓展赋值运算符:+=,-=,*=,/=

用代码演示

算术运算符

public class Demo02 {
    public static void main(String[] args){
        //算术运算符
        int a=10;
        int b=20;
        int c=12;
        int d=30;
        System.out.println(c%a)
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3g7IzZV-1631009031023)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\image-20210904095010035.png)]

public class Demo03 {
    public static void main(String[] args){
        long a=2002122020021221l;
        int b=123;
        short c=10;
        byte d=8;
    System.out.println(a+b+c+d);//long
    System.out.println(b+c+d);//int
    System.out.println(c+d);//int
   }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fOddP2OJ-1631009031025)(D:\JAVA学习图片\java变量常量作用域\09.png)]

public class Demo03 {
    public static void main(String[] args){
        long a=2002122020021221l;
        int b=123;
        short c=10;
        byte d=8;

    System.out.println(a+b+c+d);//long
    System.out.println(b+c+d);//int
    System.out.println((String) (c+d));//int
   }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3jZlaQky-1631009031027)(D:\JAVA学习图片\java变量常量作用域\08.png)]

自动升为混合运算最高类型。

运算规则,先转为同类型最高运算符进行运算。

关系运算符

关系运算符返回的结果:正确,错误 即布尔值

public class Demo04 {
    public static void main(String[] args){
        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);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnFx8Cgw-1631009031029)(D:\JAVA学习图片\java运算符\01.png)]

与选择结构一起使用。

自增自减运算符

只需要一个数,所以也叫做一元运算符。

public class Demo04 {
    public static void main(String[] args){
       int a=3;
       int b=a++;//执行完这行代码后,先给b赋值,再自增。
        //a=a+1
      System.out.println(a);
       int c=++a;//执行完这行代码前,先自增,再给c赋值。
       System.out.println(a);
       System.out.println(b);
       System.out.println(c);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XQtJ2V8t-1631009031030)(D:\JAVA学习图片\java运算符\02.png)]

a++

先赋值再自增。

++a

先自增再赋值

自减同理

逻辑运算符

  • &&:逻辑与运算:两个变量都为真,结果才为true。
  • ||:逻辑或运算:只要两个变量有一个为真,结果就为真。
  • !:如果是真则变为假,如果是假则变为真。
public class Demo05 {
    public static void main(String[] args) {
      //与(and)          或(or)       非(取反)
      boolean a=true;
      boolean b=false;
    System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true。
    System.out.println("a||b:"+(a||b));//逻辑或运算:只要两个变量有一个为真,结果就为真。
    System.out.println("!(a&&b):"+(!(a&&b)));//如果是真则变为假,如果是假则变为真。
  }
}

短路原则

上述代码若为

    ```java
    System.out.println("b&&a:"+(b&&a));
    ```

则因为因为 b是假的a是真的一开始发现b是假的而直接不看后面的a而直接返回假

public class Demo05 {
    public static void main(String[] args) {
        int c=5;
        boolean d=(c<4)&&(c++<4);
        System.out.println(c);
        System.out.println(d);
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUckfqxi-1631009031031)(D:\JAVA学习图片\java运算符\03.png)]

发现输出的c不是6,由此可知短路原则成立。

位运算符

public class Demo05 {    public static void main(String[] args) {      /*      A=0011 1100      B=0000 1101      A&B  A与B   将A与B比较两个相同位置的数位1则为1,否则就是0.                 0000 1100      A|B  A或B  对应位为0则为0,有一个1则为1.                  0011 1101      ~B   取反             0010      亦或运算:A^B  对应位相同为0,不相同为1      0011 0001      面试题:       2*8怎么运算最快?       2*8=16;2*2*2*2       <<左移  *2      >>右移/2       0000 0000     0       0000 0001     1       0000 0010     2       0000  0011    3       0000  0011    4       0000  1000    8       0001  0000    16       */        System.out.println(2<<3);  }}

位运算效率极高。

要深究的话要学习计算机的底层逻辑

三元运算符

public class Demo04 {    public static void main(String[] args){      int a=10;      int b=20;      a+=b;//a=a+b        a-=b;//a=a-b        System.out.println(a);        //字符串连接符  +,String  在+号两侧只要出现了string类型就会把另外的操作数都转换为String类型进行连接        System.out.println(a+b);        System.out.println(""+a+b);        System.out.println(a+b+"");//如果字符串在后面先运算再拼接。    }}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2IwpQ3cC-1631009031032)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\image-20210904164053515.png)]


? :

public class Demo04 {    public static void main(String[] args){     //x?y:z        //如果x==true,则结果为y,否则结果为z        int score=80;       String type= score<60 ?"不及格":"及格";           /*        score<60 ?"不及格":"及格";会返回出一个结果        需要用用string类型接收        所以定义一个type。接收该值。         */       System.out.println(type);    }}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qx80lwsf-1631009031033)(D:\JAVA学习图片\java运算符\05.png)]

优先级

括号优先级最高

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值