JAVA运算符

/*
测试运算符
*/
public class TestOperator {

public static void main(String[] args) {

//算数运算符 (一元,二元运算符)
//一元 ++ --
/*
整数运算:
①如果两个操作数有一个为 long, 则结果也为 long。
②没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
浮点运算:
① 如果两个操作数有一个为 double,则结果为 double。
② 只有两个操作数都是 float,则结果才为 float。
*/

System.out.println("一元,二元运算符");
int a = 5;
int b = a++; //此时先把a的值赋值给b,然后a+1 --同理
a = 9;
b = a%3; //取余数
b = ++a; //此时a先进行+1再进行赋值给b

//赋值运算符 =
System.out.println("赋值运算符");
int c = 5;
//扩展运算符 += -+ *= /=
int d = 1;
d+=1; //等同于 a=a+1
d-=1; //等同于 a=a-1
d*=5; //等同于 a=a*5
d/=2; //等同于 a=a/2

//关系运算符 >,<,>=,<=,==,!= instanceof
// == 和 != 基本数据类型和引用数据类型都可以使用 其他的只针对数值型(不包括instanceof)
System.out.println("关系运算符");
boolean e;
e = 2>1; //返回true
e = 2<1; //返回false
e = 100>=100; //返回true
e = 100<=10; //返回false

a = 100;
e = a==100; //返回true 这个==是判断是否为同一个对象
e = 1!=2; //返回true
// 对象 instanceof 类
//instanceof 是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对 象时,返回 true;否则,返回 false。

//逻辑运算符
System.out.println("逻辑运算符");
boolean f = 1>2&2>1; //false 逻辑与,两个操作数为 true,结果才是 true,否则是 false
f = 1>2|2>1; //true 逻辑或,两个操作数有一个是 true,结果就是 true
f = 1>2&&2>1; //false 短路与,只要有一个为 false,则直接返回 false
f = 1<2||0==1; // true 短路或,只要有一个为 true, 则直接返回 true
f = !true; // false 逻辑非,取反:!false 为 true,!true 为 false
f = true ^ false; // true 逻辑异或,相同为 false,不同为 true
//注意:短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能 够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。

//位运算符 & | ^ ~
System.out.println("位运算符");
//按位与 &
System.out.println(78&46); //原理是将两个值都转换为2进制然后进行进行位的运算,两个值都是1则为1、否则为0,将算出的数再转换为10进制就是得出的结果,如果位数不够则补0(八位)
// 78二进制 1001110
// 46二进制 0101110 (在101110前补0)
// 结果 0001110 转换为10进制= 14 结果为14
//按位或 |
System.out.println(78|46); //两个值只要有一个为1则位数结果为1、否则为0
// 根据上面78和46的例子 进行计算得出 1101110 转换为10进制=110

//非运算符 取反
System.out.println((~2)); //该运算符只要一个计算数 将0改为1、1改为0 取反之后再+1 原理我也没搞太清楚、、、、

//按位异或 ^
System.out.println(7^15); //相同为0,不同为1

//左移运算符 <<
System.out.println(12<<3); //二进制为 00001100 左移后 00110000 就是把前面的两位删除,后面多加两个0 也可以套用 m<<n = m*2^n

//右移运算符 >>
System.out.println(12>>3); //和左移同理 可以套用公式 M >> n = M / 2^n

/*
1 &和|既是逻辑运算符,也是位运算符。如果两侧操作数都是 boolean 类型,就作为逻 辑运算符。如果两侧的操作数是整数类型,就是位运算符。
2 不要把“^”当做数学运算“乘方”,是“位的异或”操作。
*/

//三目运算符 (三元运算符)
//语法:x ? y : z
//其中 x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算的结果为 表达式 y 的值,否则整个运算结果为表达式 z 的值。








}
}
posted @ 2022-03-22 18:30  青岛张曼玉  阅读(94)  评论(0)    收藏  举报