package com.xch.test04;/*** 笔试题测试** @author XuChenghe* @date 2023/8/31 16:03*/
public class Test08 {public static void main(String[] args) {f1();System.out.println();f2();System.out.println();f3();}/*** 计算公式优先级*/public static void f1() {int x = 10;System.out.println(x += x -= x *= x);// 运算符优先级一致,则按结合性(计算顺序)从右到左int y = 10;System.out.println(y += (y -= (y *= y)));int z = 10;int z1 = z * z;System.out.println(z1);int z2 = z - z1;System.out.println(z2);int z3 = z + z2;System.out.println(z3);}/*** 运算符运算*/public static void f2() {// 且[有一个为假即为假](true时要执行后面判断,false时不要执行后面判断)System.out.println(true && true); // trueSystem.out.println(true && false); // falseSystem.out.println(false && true); // falseSystem.out.println(false && false); // false// 或[有一个为真即为真](true时不要执行后面判断,false时要执行后面判断)System.out.println(true || true); // trueSystem.out.println(true || false); // trueSystem.out.println(false || true); // trueSystem.out.println(false || false); // false// 按位非(取反)// 3 = 0000 0011// ~3 = 1111 1100// = 1111 1011(转为十进制,先-1)// = -0000 0100(反转为4,所以原值为-4)// = -4System.out.println(~3); // -4// 按位与[结果和&&一致](前面是true/false都会执行后面的逻辑)System.out.println(1 & 1); // 1System.out.println(1 & 0); // 0System.out.println(0 & 1); // 0System.out.println(0 & 0); // 0// 按位或[结果和||一致](前面是true/false都会执行后面的逻辑)System.out.println(1 | 1); // 1System.out.println(1 | 0); // 1System.out.println(0 | 1); // 1System.out.println(0 | 0); // 0// 按位异或[不同时为1,相同时为0](前后都要判断)System.out.println(1 ^ 1); // 0System.out.println(1 ^ 0); // 1System.out.println(0 ^ 1); // 1System.out.println(0 ^ 0); // 0}/*** 运算符执行*/public static void f3() {String str = null;// 后面要报错则str要为null,&&为true才判断后面逻辑,逆向思维所以前面str==null则会触发异常
// System.out.println(str == null && str.length() == 0); // 报错NLPSystem.out.println(str != null && str.length() == 0);// 后面要报错则str要为null,||为false才判断后面逻辑,逆向思维所以前面str!=null则会触发异常System.out.println(str == null || str.length() == 0);
// System.out.println(str != null || str.length() == 0); // 报错NLP// 前面是true/false都会判断后面逻辑
// System.out.println(str == null & str.length() == 0); // 报错NLP
// System.out.println(str != null & str.length() == 0); // 报错NLP// 前面是true/false都会判断后面逻辑
// System.out.println(str == null | str.length() == 0); // 报错NLP
// System.out.println(str != null | str.length() == 0); // 报错NLP}}