运算符

113 阅读3分钟

Java中的运算符

  • 算数运算符: +,-,*,/,%,++,--
  • 赋值运算符: =
  • 关系运算符: >,<,>=,<=,==,!=,instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~,>>,<<,>>>
  • 条件运算符(三目运算符): ?
  • 扩展赋值运算符: +=,-=,*=,/=

案例

基本运算符

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 / b);//0
        System.out.println(a / (double)b);//0.5
    }
}

==运算时结果会自动转换为最大的类型,例如long,double,否则默认为int类型==

package operator;

public class Demo02 {

    public static void main(String[] args) {
        long a = 12545454512545L;
        int b = 1022522;
        short c = 1313;
        byte d = 10;

        System.out.println(a + b + c + d);//long型,12545455536390
        System.out.println(b + c + d);//int型,1023845
        System.out.println(c + d);//int型,1323
        //运算时结果会自动转换为最大的类型,例如long,double,否则默认为int类型
        System.out.println((double) (c + d));//1323.0
    }
}

自增(减)运算符 ++,--

  • ==a++(--) 相当于先将a的值用于运算,再将a进行自增(减)==
  • ==++(--)a 相当于先将a的值自增(减),再将a的值用于运算==
package operator;

public class Demo03 {

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

        int b = a++;//执行完这段代码后,先给b赋值,a再自增
        //a = a + 1;
        System.out.println(a);
        System.out.println(b);
        //a = a + 1;
        int c = ++a;//执行这段代码之前,a先自增,再给c赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);


    }
}

逻辑运算符

  1. 逻辑与(and)运算: && 两个变量都为真,结果才为true 该运算是短路的,即:当发现第一个变量或表达式为假时,不执行第二个表达式,直接返回false
  2. 逻辑或(or)运算:|| 两个变量有一个为真,则结果才为true,换言之两个变量都为假,结果才为false 该运算是短路的,即:当发现第一个变量或表达式为真时,不执行第二个表达式,直接返回true
  3. 逻辑非运算: ! 如果为真,则变为假,如果为假,则变为真
package operator;

//逻辑运算符
public class Demo04 {

    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,换言之两个变量都为假,结果才为false
        System.out.println("a && b:" + !(a && b));//非运算:如果为真,则变为假,如果为假,则变为真

        //短路运算
        int c = 5;
        boolean d = (c < 4) && (c++ < 10);

        System.out.println(d);
        System.out.println(c);
    }
}

位运算符

  1. 位与: & 对位都为1,则结果为1,否则结果为0
  2. 位或: | 对位中有一个为1,则结果为1,否则结果为0
  3. 异或: ^ 对位相同,则为0,否则结果为1
  4. 非: ~ 取反操作,1变为0,0变为1
package operator;

//位运算符
public class Demo05 {

    public static void main(String[] args) {
        /*
          A = 0011 1100
          B = 0000 1101
          -------------
          A & B =   0000 1100
          A | B =   0011 1101
          A ^ B =   0011 0001
          ~ B = 1111 0010

          2 * 8 = 16
          <<    *2
          >>    /2
         */

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

扩展赋值运算符

  1. +=    a+=b --------> a = a + b
  2. -=    a-=b --------> a = a - b
  3. *=    a*=b --------> a = a * b
  4. /=    a/=b --------> a = a / b
package operator;

//扩展赋值运算符
public class Demo06 {

    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);//10
    }
}

字符串连接符 +

  1. ==当字符串位于数字变量之前时,所有变量做字符串拼接==
  2. ==当字符串位于数字变量之后时,先做变量的运算操作,再进行字符串的拼接==
package operator;

//字符串连接符
public class Demo06 {

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //字符串连接符 +
        System.out.println("a" + a + b);//a1020
        System.out.println(a + b + "");//30a
    }
}

三元运算符

==表达式 ?值1 : 值2
如果表达式为true,则结果为值1,否则,结果为值2==

package operator;

//三元运算符
public class Demo07 {

    public static void main(String[] args) {
        // x ? y : z
        //如果x == true,则结果为y,否则结果为z
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);//及格
    }
}