public class Operation {
public static void main(String[] args) {
//赋值运算符 =
//扩展的赋值运算符 += -= *= /= %= 先运算 后赋值
//扩展赋值运算符隐含类型的强制转换
int a1 = 10;
a1 += 10;//a1 = a1 + 10;
System.out.println(a1);//20
short s1 = 20;
//s1 = s1 + 10;报错 s1 + 10为int型
s1 += 10;//类似于s1 = s1 + 10; 此时扩展赋值运算符隐含类型的强制转换
//自增、自减运算符
// ++自增 --自减 只有一个操作数
//既可以在变量的左边 也可以在变量的右边
//单独使用时 ++和--无论放在变量的左边还是右边结果是一样的
int a2 = 11;
/*
a2--;//先取值 后运算
System.out.println(a2);//10 以进行自减操作
--a2;//先运算 后取值
System.out.println(a2);//9
*/
int a3;
a3 = a2--;//先取值(a3 = a2) 后运算(a2 = a2 - 1)
System.out.println(a3);//11
a3 = --a2;//先运算(a2 = a2 - 1) 后取值(a3 = a2)
System.out.println(a3);//9
int x = 10;
int y = x++ + x++ + x++;//y = 10 + 11 +12
System.out.println(x);//13
System.out.println(y);//33
//关系运算符
// == != > < >= <=
//注意:关系运算符运算的结果都是boolean类型 要么是true 要么是false
//同时注意 == 不要写成 =
int m = 10;
int n = 20;
System.out.println(m==n);//false
System.out.println(m!=n);//true
System.out.println(m>n);//false
System.out.println(m<n);//true
System.out.println(m>=n);//false
System.out.println(m<=n);//true
//如果在开发中 比较的结果在后续程序中需要使用 需要创建一个boolean类型变量保存结果
//boolean flag = m > n;
//逻辑运算
//在数学中 如果表示一个数大于3小于6 : 3<x<6
//但在java中 要拆分为 x>3 x<6 合并为 x>3 && x<6
//逻辑运算符
//&(与) a&b a和b同为true才为true 否则为false
//|(或) a|b a和b同为false才为false 否则为true
//!(非) !a 取反 true变为false false变为true
//^(异或) a^b a和b结果不同为true 不同为false
int i = 10;
int j = 20;
int k = 30;
System.out.println((i > j) & (i > k));//false
System.out.println((i < j) | (i > k));//true
System.out.println(!(i < j));//false
//短路逻辑运算符
//&& 短路与 作用与&相同 但是&&当左边为假,则右边不执行 而&无论左边为真或假,右边都执行
//|| 短路或 作用与|相同 但是||当左边为真,则右边不执行 而|无论左边为真或假,右边都执行
int p =3;
int c =4;
System.out.println(p++ >4 && c++ >5);//左为false 右边不参与运算
System.out.println(p + "----" + c);
//位运算
//位运算指的是进行二进制位的运算
//~取反
//&按位与
//|按位或
//^按位异或 经过三次异或就可以交换两个数的位置
//<<左移 将整个二进制数据左移一位 相当于将原来的数乘2
//>>右移 将整个二进制数据右移一位 相当于将原来的数除2
//&和| 如果两边的操作数为boolean型则为逻辑运算 如果两边的操作数为整型则为位运算
int a4 = 5;
int a5 = 3;
int a6 = 2;
System.out.println(~a4);//-6
//5 0000 0101
//取反 1111 1010
// 1000 0110 -6原码
// 1111 1001 -6反码
// 1111 1010 -6补码
System.out.println(a4 & a5);//1
// 5 0000 0101
// 3 0000 0011
// 0000 0001 1
System.out.println(a6 * a6 * a6);//8
System.out.println(a6 << 2);//8
//2 0000 0010
//左移两位 0000 1000 8
//三元运算符
//格式 :关系表达式 ? 表达式1 : 表达式2 (a>b)?a:b
//三元运算规则
//1.关系表达式取值为真 则结果为表达式1
//2.关系表达式取值为假 则结果为表达式2
}
}
运算符 (续)
最新推荐文章于 2024-08-12 15:45:48 发布