public class Operator{
public static void main(String [] args){
/* byte a=10;
byte b=8;
System.out.println(a|b);
*/ //正负数之间:原码、反码、补码相互转换
/*0000 1010
0000 1000
----------------
0000 1010 10
*/
int num1=10,num2=20;
int res=num1+num2;
System.out.println(res);
String str="运算结果:";
System.out.println(str+res);//"运算结果:30"
System.out.println(str+num1+num2);//前后为数值类型表示加号,前后有字符串类型,表示字符串的拼接
System.out.println(str+(num1+num2));
System.out.println(str+num1+true);
//System.out.println(str+num1-num2);
//自增自减运算符
num1++;
System.out.println(num1);//11
++num1;//此种情况下自增运算符在变量的前后没有区别
System.out.println(num1);//12
res=num1++;//自增自减运算符在变量后,先使用,后自增
System.out.println(num1);//13
System.out.println(res);//12?
res=++num1;//自增自减运算符在变量前,先自增,后使用
System.out.println(num1);//14
System.out.println(res);//14
//赋值运算符
num1=10;
System.out.println(num1);
num1+=10;//相当于num1=num1+10;
System.out.println(num1);//20
num1*=10;
System.out.println(num1);//200
num1/=10;
System.out.println(num1);//20
num1%=3;
System.out.println(num1);//2
short s=10;
//s=s+10;//数值类型中不同的数据类型运算,运算结果的数据类型以大的为准。
s+=10;//此种情况10的数据类型不是默认的整形,而是与s保持同种数据类型
System.out.println(s);
num1=10;
num2=20;
//关系运算符
System.out.println(num1>num2);//false
System.out.println(num1>=num2);//false
System.out.println(num1<=num2);//true
System.out.println(num1!=num2);//true
System.out.println(num1<num2);//true
System.out.println(num1==num2);//false
int num3=30;
//逻辑运算符
boolean flag=false;
System.out.println(num1<num2&&num2<num3);//true
System.out.println(num1>num2&&num2<num3);//false
System.out.println(num1<num2&&num2>num3);//false
System.out.println(num1>num2&&num2>num3);//false
//&&短路与:当前面一个表达式的值可以决定最终值,那么后面的表达式不会被执行
System.out.println(num1>num2&&(flag=num2<num3));//false
System.out.println(flag);//false
System.out.println(num1<num2||num2<num3);//true
System.out.println(num1>num2||num2<num3);//true
System.out.println(num1<num2||num2>num3);//true
System.out.println(num1>num2||num2>num3);//false
//||短路或:当前面一个表达式的值可以决定最终值,那么后面的表达式不会被执行
System.out.println(num1<num2||(flag=num2<num3));//true
System.out.println(flag);//false
//相同就是错的^不同就是对的
System.out.println(num1<num2^num2<num3);//false
System.out.println(num1>num2^num2<num3);//true
System.out.println(num1<num2^num2>num3);//true
System.out.println(num1>num2^num2>num3);//false
System.out.println(num1<num2&num2<num3);//true
System.out.println(num1>num2&num2<num3);//false
System.out.println(num1<num2&num2>num3);//false
System.out.println(num1>num2&num2>num3);//false
//&逻辑与:前面一个表达式的值可以决定最终值,那么后面的表达式依然会被执行
System.out.println(num1>num2&(flag=num2<num3));//false
System.out.println(flag);//true
flag=false;
System.out.println(num1<num2|num2<num3);//true
System.out.println(num1>num2|num2<num3);//true
System.out.println(num1<num2|num2>num3);//true
System.out.println(num1>num2|num2>num3);//false
//|逻辑或:前面一个表达式的值可以决定最终值,那么后面的表达式依然会被执行
System.out.println(num1<num2|(flag=num2<num3));//true
System.out.println(flag);//true
}
}