Java基础语法3:运算符


Java基础语法3:运算符

算术运算符:

  1. 符号: + , – , * , / , % , ++ , —
  2. 相同类型的运算正常输入即可
    • 运算结果为其他类型,要先转换其中一个值
  • 下面进行一些简单操作:
package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        System.out.println(a+b);//结果30
        System.out.println(a-b);//结果-10
        System.out.println(a*b);//结果200
        System.out.println(a/(double)b);//结果为0.5,先给一个数进行转换
    }
}
  1. 多个不同类型之间运算,最后结果类型一定为高类型
    • 例如上面的运算中有double,最后结果一定是double类型
    • 基础类型的高低排序在我Java基础语法2中有提到
  • 下面进行一些简单操作:
package operator;

public class Demo02 {
    public static void main(String[] args) {
        //多个不同类型之间运算,最后结果类型一定为高类型
        //例如上面的运算中有double,最后结果一定是double类型
        //基础类型的高低排序在我Java2基础语法中有排序
        long a = 132456L;
        int b=15;
        short c=10;
        byte d=8;
        float e=16f;
        double f=158;
        System.out.println(a+b+c+d+e+f);//结果为double类型
        System.out.println(a+b+c+d+e);//结果为double类型
        System.out.println(a+b+c+d);//结果为long类型
        System.out.println(a+b+c);//结果为long类型
        System.out.println(a+b);//结果为long类型
        System.out.println(b+c+d);//结果为int类型
        System.out.println(c+d);//结果为int类型

    }
}
  1. 最后提到算数运算符中的一元运算符:++ 自增 — 自减
    • ++在前(先自增再赋值)++在后(先赋值再自增)
  • 下面进行一些简单操作:
package operator;

public class Demo04 {
    public static void main(String[] args) {
        // ++   --  自增   自减  一元运算符
        int a = 3;
        int b = a++;//执行完这行代码后(先给b赋值,再自增)

        //a=a+1;隐藏代码,自动运行,无需操作

        System.out.println(a);//结果为4

        //a=a+1;隐藏代码,自动运行,无需操作

        int c = ++a;//执行完这行代码前(先自增,再给b赋值)
        System.out.println(a);//结果为5
        System.out.println(b);//结果为3
        System.out.println(b);//结果为3
        System.out.println(c);//结果为5
        System.out.println(c);//结果为5

        //幂运算 java中不能这样输入 2^3 2*2*2 = 8
        //很多运算,我们会使用一些工具类来操作
        double pow = Math.pow(2, 3);//2的3次方
        System.out.println(pow);//结果为8

    }
}

赋值运算符:

  1. 符号: =
  2. 不做过多说明

关系运算符:

  1. 符号: > , < , >= , <= , == , !=instanceof
  2. 关系运算符的结果为:正确或者错误 为布尔值
  • 下面进行一些简单操作:
package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误   结果为布尔值
        int a = 15;
        int b = 25;
        int c = 16;
        int d = 24;
        int e = 50;
        System.out.println(e%a);// 结果为5  %为余值,读模 50/15=3...5
        System.out.println(a>b);//结果为false
        System.out.println(c<d);//结果为true
        System.out.println(b>=d);//结果为true
        System.out.println(a<=c);//结果为true
        System.out.println(a!=b);//结果为true

    }
}

逻辑运算符:

  1. 符号: && ,|| ,!

  2. 与(and) , 或(or) , 非(取反)

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

    • 逻辑与运算如果前面的运算为假,则不进行后面的运算,称之短路运算
  4. 逻辑或运算:两个变量有一个为真,结果为真

  5. 逻辑非运算:如果是真则变为假,如果是假则变为真

  • 下面进行一些简单操作
package operator;
//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //  &&   ||   !
        // 与(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,则结果为真
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,结果为真
        System.out.println("!a&&b:"+!(a&&b));//如果是真则变为假,如果是假则变为真

        //短路运算
        int i = 6;
        boolean d = (i<5)&&(i++<10);
        System.out.println(i);//结果为6,不进行后面的运算
        System.out.println(d);//结果为false
        //逻辑与运算中前面的结果为假,则不进行后面的运算,称之短路运算
        boolean e = (i<5)||(i++<10);
        System.out.println(i);//结果为7,两个运算都进行
        System.out.println(e);//结果为ture
        //逻辑或运算两个运算都进行,并且有一个为真即为真

    }
}

位运算符:

  1. 符号: & ,| ,^ , ~ , >> , << , >>>(了解!!!)

  2. 涉及到二进制的运算:单个运算

  3. &与运算 : 00为0,01为0,11为1

  4. |或运算 : 00为0,01为1,11为1

  5. ^亦或运算:不同为0,相同为1

  6. ~非运算:完全相反

  7. 右移>> : 右移一次/2

  8. 左移<< : 左移一次*2

  • 下面进行一些简单操作:
package operator;
//位运算
public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0010 0110
        B = 1001 1010
        -------------------
        A&B = 0000 0010
        A|B = 1011 1110
        A^B = 1011 1100
        ~B  = 0110 0101

        面试题:
        2*8怎么运算最快 :可以拆分成2*2*2*2
        位运算效率极高

        二进制编码中:
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0011   3
        0000 0100   4
        0000 0101   5
        0000 0110   6
        0000 0111   7
        0000 1000   8
        以此类推
        0001 0000   16
        得出结论
        << 左移一位*2
        >> 右移一位/2

         */
        System.out.println(2<<3);//2右移三位,即2*2*2*2=16

    }
}

条件运算符:

  1. 符号: ? :

  2. 条件运算符为三元运算符

  3. 举例:x ? y : z 意思如果x为真,则结果为y,否则结果为z;

  • 下面进行一些简单操作:
package operator;
//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        // x ? y : z
        //如果x==true,则结果为y, 否则结果为z

        int score1 = 60;
        String type1 = score1 < 60?"不合格":"合格";
        //如果分数小于60分为不合格,否则为合格
        
        int score2 = 95;
        String type2 = score2 > 90?"优秀":"良好";
        //如果分数大于90分为优秀,否则为良好
        
        System.out.println(type1);//结果为合格
        System.out.println(type2);//结果为优秀
        //------------------------------------------
        int salary = 2500;
        String choose = salary<5000?"进厂打螺丝":"选择这份工作";
        //如果工资小于5000则进场打螺丝,否则选择这份工作
        
        System.out.println(choose);//哦豁,进厂打螺丝

    }
}

扩展赋值运算符:

  1. 符号: += , -= , *= , /=

  2. 简单地说就是偷懒的运算

  3. 例如:a+=b即为a=a+b

  4. 拓展:+号算法 字符串连接 String

    • 只要+号运算符两侧出现字符串String类型
    • 则会把其他操作都转换成Sting类型再进行连接
    • 字符串在前面,则进行字符串连接
    • 字符串在后面,前面依旧进行运算,再进行字符串连接
  • 下面进行一些简单操作:
package operator;
//拓展赋值运算符
public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a+=b;//a=a+b
        a-=b;//b=a-b
        System.out.println(a);
        //第一个结果30
        //第二个结果-10

        //拓展:字符串连接符 +

        System.out.println(a+b);//结果30

        //只要+号运算符两侧出现字符串String类型
        //他会把其他操作都转换成String再进行连接

        //面试题,下面两个

        System.out.println(""+a+b);//为1020
        //字符串在前面,则直接进行字符串连接

        System.out.println(a+b+"");//为30
        //字符串在后面,前面依旧进行运算,再进行字符串连接
    }
}

Java语言运算符的优先级:

Java基础语法3:运算符

  1. 最优先级: ( )
  2. 完全靠死记硬背是很累的,要靠读者多练习。
  3. 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成。
  4. 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用 ( ) 来控制表达式的执行顺序。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/275299.html

(0)
上一篇 2022年7月19日
下一篇 2022年7月19日

相关推荐

发表回复

登录后才能评论