java赋值运算符与逻辑运算符

    科技2022-07-12  118

    /* 运算符之二:赋值运算符 = += -= *= /= %=

    */ class SetValueTest { public static void main(String[] args) { //赋值符号:= int i1 = 10; int j1 = 10;

    int i2,j2; //连续赋值 i2 = j2 = 10; int i3 = 10,j3 = 20; //********************* int num1 = 10; num1 += 2;//num1 = num1 + 2; System.out.println(num1);//12 int num2 = 12; num2 %= 5;//num2 = num2 % 5; System.out.println(num2); short s1 = 10; //s1 = s1 + 2;//编译失败 s1 += 2;//结论:不会改变变量本身的数据类型 System.out.println(s1); //开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;) //方式一:num = num + 2; //方式二:num += 2; (推荐) //开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;) //方式一:num = num + 1; //方式二:num += 1; //方式三:num++; (推荐) //练习1 int i = 1; i *= 0.1; System.out.println(i);//0 i++; System.out.println(i);//1 //练习2 int m = 2; int n = 3; n *= m++; //n = n * m++; System.out.println("m=" + m);//3 System.out.println("n=" + n);//6 //练习3 int n1 = 10; n1 += (n1++) + (++n1);//n1 = n1 + (n1++) + (++n1); System.out.println(n1);//32 }

    }


    思考1: short s = 3; s = s+2; ①//编译不通过 s += 2; ② ①和②有什么区别? 思考2: int i = 1; i *= 0.1; System.out.println(i);//0 i++; System.out.println(i);//1 思考3: int m = 2; int n = 3; n *= m++; System.out.println(“m=” + m);//3 System.out.println(“n=” + n);//6 思考4: int n = 10; n += (n++) + (++n); System.out.println(n);//32


    /* 运算符之三:比较运算符 == != > < >= <= instanceof

    结论: 1.比较运算符的结果是boolean类型 2.区分 == 和 = */ class CompareTest { public static void main(String[] args) { int i = 10; int j = 20;

    System.out.println(i == j);//false System.out.println(i = j);//20,先赋值后输出 boolean b1 = true; boolean b2 = false; System.out.println(b2 == b1);//false System.out.println(b2 = b1);//true }

    }


    /* 运算符之四:逻辑运算符

    &—逻辑与 &&—短路与 | || ! ^

    说明: 1.逻辑运算符操作的都是boolean类型的变量

    */ class LogicTest { public static void main(String[] args) {

    //区分& 与 && //相同点1:& 与 && 的运算结果相同 //相同点2:当符号左边是true时,二者都会执行符号右边的运算 //不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。 //开发中,推荐使用&& boolean b1 = true; b1 = false; int num1 = 10; if(b1 & (num1++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); } System.out.println("num1 = " + num1); boolean b2 = true; b2 = false; int num2 = 10; if(b2 && (num2++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); } System.out.println("num2 = " + num2); // 区分:| 与 || //相同点1:| 与 || 的运算结果相同 //相同点2:当符号左边是false时,二者都会执行符号右边的运算 //不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算 //开发中,推荐使用|| boolean b3 = false; b3 = true; int num3 = 10; if(b3 | (num3++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); } System.out.println("num3 = " + num3); boolean b4 = false; b4 = true; int num4 = 10; if(b4 || (num4++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); } System.out.println("num4 = " + num4); }

    } 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。 “&”和“&&”的区别: 单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。 “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。理解:异或,追求的是“异”!


    练习:请写出每题的输出结果 int x = 1; int y=1; if(x++2 & ++y2){ x =7; } System.out.println(“x=”+x+",y="+y);//2,2


    int x = 1,y = 1; if(x++2 && ++y2){ x =7; } System.out.println(“x=”+x+",y="+y);//2,1


    int x = 1,y = 1; if(x++1 | ++y1){ x =7; } System.out.println(“x=”+x+",y="+y);//7,2


    int x = 1,y = 1; if(x++1 || ++y1){ x =7; } System.out.println(“x=”+x+",y="+y);*********//7,1


    【面试题】程序输出: 1. class Test { 2. public static void main (String [] args) { 3. boolean x=true; 4. boolean y=false; 5. short z=42; 6. //if(y == true) 7. if((z++42)&&(y=true))z++; 8. if((x=false) || (++z45)) z++; 9. 10. System. out.println(“z=”+z); 11. } 12. } 结果为: z= 46

    Processed: 0.009, SQL: 8