一、比较运算符
>、<、>=、<=、==、!=
相等是用“==”,一个“=”是赋值运算符。
二、布尔类型
boolean
例:boolean b;
这种类型只有两个值:true(真)、false(假)。
5 > 3 true
3 > 4 false
三、逻辑运算符
1、&&(与)、||(或)、!(非)
&&:两个操作同时为真时,此表达式为真,否则为假。
||:只要有一个操作数为真,此表达式为真。
!:操作数为真,表达式为假。操作数为假,表达式为真。
a&&b a||b !a
a=true, b=true true true false
a=true, b=false false true false
a=false,b=true false true true
a=false,b=false false false true
例:3<X<5 x>3 && x<5
x>3或者x<-1 x>3 || x<-1
class Test{
public static void main(String[] a){
int x = 3;
int y = 5;
boolean b;
//b = x > y && x++;//错误,不能用数字来表示真或假
b = x > y &&( x++ < y);
}
}
2、短路效应
在一个逻辑表达式中,如果在执行过程中就能够得到整个表达式的结果,那么后面的表达式将不再执行。
class Test{
public static void main(String[] a){
int x = 3;
int y = 5;
boolean b;
b = x > y && ( x++ < y);
System.out.println("x = " + x);//x=3
}
}
class Test{
public static void main(String[] a){
int x = 3;
int y = 5;
boolean b;
b = x < y && ( x++ < y);
System.out.println("x = " + x);//x=4
}
}
四、类型转换
类型转换有两种,一种是隐式转换(自动转换);另外一种是显式转换(强制转换)。
1、隐式转换
总原则:将取值范围小的类型自动转换成取值范围大的类型。
取值范围:double>float>long>int>byte、char
double d = 5;
class Test{
public static void main(String[] a){
double x = 3;
int y = 5;
int z = x + y;//错误,因为x+y最后类型是double.
}
}
1)当表达式中只含有short、byte、char类型,整个表达式的值的类型将转换为int。
class Test{
public static void main(String[] a){
byte x = 3;
x = x * x;//错误。x*x最后类型是int。
}
}
2)当表达式中含有double、float、long、int类型中的一种,那么整个表达式的值的类型将转换成表达式中取值范围最大的类型。
class Test{
public static void main(String[] a){
byte x = 3;
float y = 5.4f;
double z = x * y;
}
}
2、显式转换
当需要将取值范围大的类型转换成取值范围小的类型,需要进行显式转换。
语法:
(最终转换的类型)需要转换类型的变量
class Test{
public static void main(String[] a){
int x;
float y = 5.6f;
x = (int)y;
System.out.println("x = " + x + " y = " + y);
}
}
强制类型转换会损失精度,一般不要进行此操作。
五、结合性和优先级
结合性一般是从左向右结合。
运算符的优先级:目数越少,优先级越大。括号的优先级最高。
class Test{
public static void main(String[] a){
int x = 3;
int y = 5;
System.out.println("x + y = " + x + y);//35.结合性
}
}
一个表达式先考虑优先级,如果优先级相同,再考虑结合性。
六、表达式和语句
使用运算符连接后的式子,称为表达式。
表达式后加上分号称为语句。