栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day04-运算符以及优先级

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day04-运算符以及优先级

运算符 算术运算符:

+,-,*,/,%(模-取余),++,–

一元运算符:

++ 自增,-- 自减

b=a++;表示的是:先给b赋值,然后再自增

b=++a;表示的是:先自增,然后再给b赋值

    public static void main(String[] args) {
        //++  --  自增,自减  一元运算符
        int a =3;

        int b = a++;  //执行完这行代码之后,先给b赋值,再自增
        //a = a + 1;
        System.out.println(a); //此时a的值是4
        System.out.println(b);
        System.out.println("=============");

        //a = a + 1;
        int c = ++a; //执行完这行代码之前,先自增,再给c赋值
        System.out.println(a); //此时a的值是5
        System.out.println(c);

        System.out.println("=============");

        //幂运算 2^3  2*2*2 = 8
        //借助于一些工具类 Math
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
二元运算符:

+,-,*,/,%

+,-,*,/ 运算;

特别注意:进行 / 的时候,有小数时,可以先强转一个数的类型在计算,不然算不出来正确结果

    public static void main(String[] args) {
        //二元运算符
        //Ctrl + D :复制当前行到下一行
        int a = 0;
        int b = 20;
        int c = 25;
        int d = 25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        //System.out.println(a/b);
        //结果应该是0.5,输出的却是0;因为向下取整取了0
        System.out.println(a/(double)b);
        //有小数的时候,要注意,可以强转一个数的类型
    } 

如果几个数中有Long型,那么最终结果是Long型;

如果几个数中有double型,那么最终结果是double型;

public static void main(String[] args) {
    long a = 123123123123123L;
    int b = 123;
    short c = 10;
    byte d = 8;
    double e = 5.6;

    //如果几个数有Long,那么最终结果是Long型
    //如果几个数有double,那么最终结果是double型
    System.out.println(a+b+c+d); //Long
    System.out.println(b+c+d); //Int
    System.out.println(c+d); //Int
    System.out.println(b+e); //Double
    System.out.println(a+e); //Double  
}

% 模运算

    public static void main(String[] args) {
        //关系运算符的返回结果: 正确,错误   布尔值

        int a = 10;
        int c = 21;

        System.out.println(c%a); // c % a  21/10=2...1
    }
赋值运算符:

= (把后面的值赋值给前面那个值)

关系运算符:

<,>,>=,<=,==(等于),!=(不等于),instanceof

public static void main(String[] args) {
    //关系运算符的返回结果: 正确,错误   布尔值

    int a = 10;
    int b = 20;

    System.out.println(a>b);
    System.out.println(a 
逻辑运算符: 

&&(与),||(或),!(非)

逻辑与运算:两个变量都为真,结果才为true;

逻辑或运算:两个变量有一个为真,结果才为true;

逻辑非运算:如果是真,则变为假;如果是假,就变为真。

短路运算:如果&&前面的结果是false,那么不会进行下一步的计算

     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)); 
        //逻辑或运算:两个变量有一个为真,结果才为true
        System.out.println("!(a && b):"+!(a&&b)); 
        //非运算:如果是真,则变为假;如果是假,就变为真
     
        System.out.println("====================");

        //短路运算
        //如果&&前面的结果是false,那么不会进行下一步的计算
        int c = 5;
        boolean d1 = (c<4)&&(c++<4); //c<4 false,那么c++就不执行了
        System.out.println(d1);
        System.out.println(c);

        System.out.println("====================");
        boolean d2= (c>4)&&(c++<4); //c>4 true,执行c++,c++<4为假,结果为false
        System.out.println(d2);
        System.out.println(c);
    }
位运算符:

&,|,^,~,>>(右移),<<(左移),>>>(了解!!!)

面试题:2 * 8怎么算最快?
2 * 8 = 16 将8拆分成2: 2 * 2 * 2 * 2
位运算效率极高!!!
位运算是直接跟底层(2进制)打交道的
<< 左移 相当于 * 2

>> 右移 相当于 / 2

 
    public static void main(String[] args) {
    
        System.out.println(2<<3); //表示的是2^3   结果为8
        System.out.println(16>>2); //表示的是3^2  结果为4
    }
条件运算符:

?,:

例如:x ? y : z

如果x==true,则结果为y,否则结果为z。

    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z

        int score = 50;
        String type = score >60 ?"及格":"不及格"; //必须掌握
        //后面经常使用的是 if() 判断
        System.out.println(type);
    }
扩展赋值运算符:

+=,-=,*=,/= 它们又被称为 偷懒运算符 。

重点关注的地方是,字符串连接符。

    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
        System.out.println(""+a+b); //""在前面,后面的会拼接

        System.out.println(a+b+""); //""在后面,前面的会计算
    }
优先级
优先级运算符类型使用形式结核性
1( )括号运算符(表达式)/函数名(形参表)由左向右
[ ]数组下标数组名[常量表达式]由左向右
.成员选择(对象)对象.成员名由左向右
->成员选择(指针)对象指针->成员名由左向右
2!、+(正号)、-(负号)一元运算符符号 表达式由左向右
~按位取反运算符~ 表达式由右向左
++、–递增与递减运算符++a或者a++由右向左
(类型)强制类型转换(数据类型)表达式由右向左
sizeof长度运算符sizeof(表达式)由右向左
3*、/、%算术运算符a * b由左向右
4+、-算术运算符a + b由左向右
5<<、>>位左移、右移运算符变量<<表达式由左向右
6>、>=、<、<=关系运算符表达式<=表达式由左向右
7==、!=关系运算符表达式==表达式由左向右
8&位运算符、逻辑运算符表达式&表达式由左向右
9^位运算符、逻辑运算符表达式^表达式由左向右
10位运算符、逻辑运算符表达式|表达式
11&&逻辑运算符表达式&&表达式由左向右
12|逻辑运算符表达式|
13? :条件运算符x ? y : z由右向左
14=、+=、-=、/=、*=赋值运算符、扩展运算符变量 符号 表达式由右向左
15,逗号运算符表达式,表达式由左向右

逻辑非 ! > 逻辑与 && > 逻辑或 ||

a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c。

1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。

有不懂的地方可以看一下up主的视频,讲的很细!
链接:狂神说Java–bilibili

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号