本章内容
算术运算符
关系运算符
位运算符
逻辑运算符
赋值运算符
其他运算符
算术运算符
所包含的算术运算符如下:
重点关注如下几个算术运算符:
public class Test{
public static void main(String[] arguments){
int a = 10;
int b = 25;
System.out.println("a%b =" + (b%a));
System.out.println("a++ =" + (a++));
System.out.println("a-- =" + (a--));
//注意 b++与++b的不同
System.out.println("b++ =" + (b++));
System.out.println("++b =" + (++b));
}
}
自增自减运算符
实例:
public class selfAddMinus{
public static void main(String[] arguments){
int a = 3;//定义一个局部变量
int b = ++a;//自增运算
int c = 3;
int d = --c;//自减运算
System.out.println("自增运算后的值" + b);
System.out.println("自减运算后的值" + d);
}
}
解析:
-
int b = ++a;
-
拆分过程:a = a + 1 =4; b = a = 4,最后结果为:b = 4,a = 4
-
-
int d = --c;
-
拆分过程:c = c - 1 =2;d = c = 2,最后结果为:d = 2,c = 2
-
最关键的两句话
前缀自增自减法(++a,--a):
先进行自增或者自减运算,在进行表达式运算
后缀自增自减法(a++,a--):
先进行表达式运算,再进行自增或者自减运算
实例:
public class selfAddMInus{
public static void main(String[] arguments){
int a = 5;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("自增运算符前缀运算后a=" + a +",x=" + x);//先进行自增或者自减运算,在进行表达式运算
System.out.println("自增运算符后缀运算后b="+ b +",y=" +y);
}//先进行表达式运算,再进行自增或者自减运算
}
关系运算符
实例:
public class TestNo1{
public static void main(String[] arguments){
int a = 10;
int b = 20;
System.out.println("a == b =" + (a == b));
System.out.println("a != b =" + (a != b));
}
}
//注意关系运算符返回的值是boolean
位运算符
特点:
-
Java定义了位运算符,应用与整数类型(int)、长整数型(long)、短整数型(short)、字符型(char)、字节型(byte)等类型
-
位运算符作用再所有的位上,按位运算
实例:
/*
下面声明的是十进制数
*/
//A = 60 B = 13它们的二进制表示如下:
/*
A = 00111100;
B = 00001101;
*/
public class TestNo2{
public static void mian(String[] arguments){
int a = 60;/*60十进制数转为二进制=00111100*/
int b = 13;/*13十进制数转为二进制=00001101*/
int c = 0;
c = a & b; /*12 = 00001100*/
System.out.println("a & b =" + c);
c = a | b;
System.out.println("a | b =" + c);
c = a ^ b;/*49 = 00110001*/
System.out.println("a ^ b =" + c);
c = ~a;/*-61 = 11000011*/
System.out.println("~a =" + c);
c = a;
System.out.println("a>>2 =" + c);
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}
逻辑运算符
实例:
public class TestNo3{
public static void main(String[] arguments){
boolean a = true;
boolean b = false;
System.out.println("a && b =" + (a && b));
System.out.println("a || b =" + (a || b));
System.out.println("!(a && ) =" +!(a && b));
}
}
短路逻辑运算符
特点:
当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
public class LuoJi{
public static void main(String[] arguments){
int a = 5;
boolean b = (a<4) && (a++<10);
System.out.println("使用短路裸机运算符的结果为" + b);
System.out.println("a的结果为" + a):
}
}
/*
解析:
该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断,所以 a 的值为 5。
*/
赋值运算符
条件运算符(?:)
特点:
-
也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值
作用:
-
决定哪个值应该赋值给变量
实例:
public class TestNo3{
public static void main(String[] arguments){
int a,b;
a = 10;
//如果a = 1成立,则设置b为20,否则为30
b = (a == 1)?20 : 30;
System.out.println("Value of b is:" + b);
//如果a = 10成立,则设置b为20,否则为30
b = (a == 10)?20 : 30;
System.out.println("Value of b is:" + b);
}
}
instanceof(n.实例)运算符
特点:
-
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)
-
instanceof运算符使用格式:
-
( Object reference variable ) instanceof ( class/interface type )
-
-
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
-
String name = "James";
boolean result = name instanceof String;//name是String类型,所以返回真
-
-
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
-
class Vehicle{}
public class Car extends Vehicle{
public static void main(String[] arguments){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println(result);
}
}
-
Java运算符优先级