Java运算符分成以下几组:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
1.算术运算符:
注意:自增(自减)在前面和在后面的区别: ++y(- -y):先将 y 的值自增(自减)1,然后再在当前表达式中使用 y 的值。 y++(y- -):先在当前表达式中使用 y 的值,然后再将 y 的值自增(自减)1。
示例如下:
int a = 25;
int b = 4;
int c = a+b; //加
System.out.println("a+b="+ c);
int d = a-b; //减
System.out.println("a-b="+d);
int e = a*b; //乘
System.out.println("a*b=" + e);
注意:整数除于整数= 整数,是截断整数,不是四舍五入取整。
int g = a/0; 整数不能除于0
当除数或者被除数有一个为浮点型,那么结果为自然除法结果。
如果此时除数为0或者为0.0,那么结果为正无穷或者负无穷,0.0除0.0结果为NaN 非数。
int f = a/b; //除
System.out.println("a/b="+f);
System.out.println("a/0.0="+(a/0.0));
System.out.println("0.0/0.0="+(0.0/0.0));
% 求余
两个整数时,第二个数不能是0
一个或者2个为浮点数,第二个为0或者0.0时,结果为NaN,第一个数为0或者0.0时,结果为0.0
int h=a%b;
System.out.println("a % b="+h);
System.out.println("a % 0.0="+(0 % 0.0));
System.out.println("0.0 & b="+(0.0 % b));
自加 单目运算符
int A = 20;
int B = 20;
int C = A++ + B;
System.out.println("++A="+(++A));
System.out.println("B++="+(B++));
System.out.println("C="+C);
自减 单目运算符
int D = 20;
int E = 20;
System.out.println("--D="+(--D));
System.out.println("E--="+(E--));
结果为:
a+b=29
a-b=21
a*b=100
a/b=6
a/0.0=Infinity
0.0/0.0=NaN
a % b=1
a % 0.0=NaN
0.0 & b=0.0
++A=22
B++=20
C=40
--D=19
E--=20
2. 关系运算符
示例如下:
System.out.println("5>4 = "+(5>4));
System.out.println("5>=4 = "+(5>=4));
System.out.println("5<4 = "+(5<4));
System.out.println("5<=4 = "+(5<=4));
System.out.println("5==4 = "+(5==4));
System.out.println("5!=4 = "+(5!=4));
结果为:
5>4 = true
5>=4 = true
5<4 = false
5<=4 = false
5==4 = false
5!=4 = true
注意:Java中 == 和 equals()方法的区别 == 在基本数据类型的时候就是比较值是否相同,在引用类型时是比较地址 equals 用于判断引用类型的值。
String str="123";
String str1="123";
int intA=123;
String strA=String.valueOf(intA);
System.out.println("str==strA = "+(str==strA));
System.out.println("str.equals(strA) = "+(str.equals(strA)));
int intA1 = 10;
int intA2 = 20 / 2;
System.out.println("intA1==intA2 :" + (intA1 == intA2));
结果为:
str==strA = false
str.equals(strA) = true
intA1==intA2 :true
3. 逻辑运算符
&&:与,前后两个操作数必须都是true才返回true,否则返回false。
&:不短路与,作用与&&相同,但不会短路。
||:或,只要两个操作数中有一个是true,就可以返回true,否则返回false。
|不短路或,作用与||相同,但不会短路。
!:非,只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。 ^:异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false。
示例如下:
int intB = 10; //短路与
if(intB <11 && intB++ <9){}
System.out.println("intB="+ intB);
int intk = 10; //不短路与
if(intk <11 & intk++ >9){}
System.out.println("intk="+ intk);
int intp = 10; //短路或 ||
if (intp >11 || intp++<9) {}
System.out.println("intp="+intp);
int into = 10; //不短路或 |
if (into <11 | into++<9) {}
System.out.println("into="+into);
if(false ^ true){ //异或 ^
System.out.println("a");
}
if (!(1 > 2)) {// ! 非
System.out.println("!(1>2)");
}
结果为:
intB=11
intk=11
intp=11
into=11
a
!(1>2)
4. 赋值运算符
示例如下:
int intZ=11;
System.out.println(intZ*=2); //相乘
int intQ=11;
System.out.println(intQ/=2); //相除 取整
int intq=11;
System.out.println(intq+=2); //相加
int inta=11;
System.out.println(inta-=2); //相减
结果为:
22
5
13
9
5. 其他运算符
- 三目运算符(?:) 三目运算符也被称为三元运算符,该运算符有3个操作数,并且需要判断布尔表达式的值,该运算符的主要是决定哪个值应该赋值给变量。
System.out.println((5>4)?"5>4":"5<4");
结果为:
5>4
- instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
示例如下:
String strb = "DengAiYi";
boolean bo = strb instanceof String;
System.out.println(bo);
结果为:
true