Java中的语句有很多形式,表达式就是其中一种形式。表达式由操作数与运算符所组成,操作数可以是常量、变量、也可以是方法。
赋值运算符 : =
实例:
public class Demo10_1{
public static void main(String[] args){
//赋值运算符: 表示将23 赋值给变量 num
// = 并不是表示"等于"的意思,而表示"赋值"
int num = 23;
System.out.println(num);
}
}
一元运算符: +(正号)-(负号)!(取反)
实例:
public class Demo10_2{
public static void main(String[] args){
int num =12;
boolean flag=true;
System.out.println(+num);//12
System.out.println(-num);//-12
System.out.println(!flag);//false
}
}
算术运算符 : +(加)-(减)*(乘)/(除)%(取模,求余)
实例:
public class Demo10_3{
public static void main(String[] args){
int num1 =11;
int num2=4;
System.out.println(num1 + num2);//15
System.out.println(num1 - num2);//7
System.out.println(num1 * num2);//44
System.out.println(num1 / num2);//2
System.out.println(num1 % num2);//3
}
}
注意:整数除以整数,得到的结果还是整数(商)
%表示获取余数,舍去商。
关系运算符:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)
关系运算都返回boolean结果,经常用在判断结构和循环结构上。
实例:
public class Demo10_4{
public static void main(String[] args){
int num1 =11;
int num2=4;
System.out.println(num1 > num2);//true
System.out.println(num1 < num2);//false
System.out.println(num1 >= num2);//true
System.out.println(num1 <= num2);//false
System.out.println(num1 == num2);//false
System.out.println(num1 != num2);//true
}
}
自增自减运算符: ++ (自增1) --(自减1)
实例:
public class Demo10_5{
public static void main(String[] args){
int a=3;
int b=3;
int i=4;
int j=4;
System.out.println("原始a的值:"+a);
System.out.println("++在a之前a的值:"+(++a)+"\t在加完后的值"+a);
System.out.println("原始b的值:"+b);
System.out.println("--在b之后b的值:"+(b++)+"\t在加完后的值"+b);
System.out.println("原始i的值:"+i);
System.out.println("--在i之前i的值:"+(--i)+"\t在加完后的值"+i);
System.out.println("原始j的值:"+j);
System.out.println("--在j之后j的值:"+(j--)+"\t在加完后的值"+j);
}
}
运行结果:
原始a的值:3
++在a之前a的值:4 在加完后的值4
原始b的值:3
–在b之后b的值:3 在加完后的值4
原始i的值:4
–在i之前i的值:3 在加完后的值3
原始j的值:4
–在j之后j的值:4 在加完后的值3
逻辑运算符: &&(短路与,and)&(and)||(短路或,or)|(or)!(逻辑非,not)
使用逻辑运算符可以连接多个逻辑运算,Java中的常用的逻辑运算符:
&(AND,与)、&&(短路与)、|(OR,或)、||(短路或)
当使用逻辑运算符“&&”时,运算符的前后的两个操作数的返回值皆为真,运算的结果才会是真;使用逻辑运算符”||”时,运算符前后的两个操作数的返回值只要有一个为真,运算的结果就会为真。如:
a>0&&b>0//两个操作数皆为真,运算的结果才为真
a>0||b>0//两个操作数只要一个为真,运算结果就为真
AND及OR结果表:
实例:
public class Demo10_6{
public static void main(String[] args){
boolean a=true;
boolean b=false;
System.out.println((a && b));//false
System.out.println((a & b));//false
System.out.println((a || b));//true
System.out.println((a |b ));//true
System.out.println(!a);//false
}
}
实例:如果一个If语句中需要同时判断多个条件,则可以使用逻辑运
public class Demo10_7{
public static void main(String[] args){
int score=50;
if((score<0)||(score>100)){
System.out.println("输入的成绩有误!");
}
if((score<60)&&(score>49)){
System.out.println("成绩不及格,你就准备补考吧!");
}
}
}
运行结果:成绩不及格,你就准备补考吧!
验证&&和&的区别
在与和或的操作中都存在两种情况,我们来分析下他们的区别:与分为短路与和非短路与,或也分为短路或和非短路或。
对于与操作来说,如果第一个条件为假,则后面的条件不管是真是假,最终的结果都是假。
对于或操作来说,如果第一个条件为真,则后面的条件不管是真是假,最终结果都为真。
在Java中对于短路与和短路或和普通的与和或的区别:
对于普通与来说,要求所用的条件都进行判断,而使用短路与,如果第一个条件为false,则后面的条件不再进行判断。
对于普通或来说,要求所有的条件都进行判断,而使用短路或,如果第一个条件为true,则后面的条件不再进行判断。
实例:
public class Demo10_8{
public static void main(String[] args){
int num1=3;
int num2=0;
//验证 &
if((num1!=3)&(num2/0==0)){
System.out.println("条件满足");
}
}
}
运行结果:
Exception in thread “main” java.lang.ArithmeticException: / by zero
at Demo10_8.main(Demo10_8.java:6)
造成出现错误的原因在于“与”操作要把所有的条件进行判断,在计算到num2/0时出现了错误。
实例:
public class Demo10_9{
public static void main(String[] args){
int num1=3;
int num2=0;
//验证 &&
if((num1!=3)&&(num2/0==0)){
System.out.println("条件满足");
}
}
}
括号运算符
括号运算符用来提高表达式的优先级
实例:
public class Demo10_10{
public static void main(String[] args){
int num1=3+4+5*6-7;
int num2=(3+4+5)*(6-7);
System.out.println("3+4+5*6-7="+num1);
System.out.println("(3+4+5)*(6-7)="+num2);
}
}
运行结果:
3+4+56-7=30
(3+4+5)(6-7)=-12
简洁表达式(复合赋值运算符)
实例:
public class Demo10_11{
public static void main(String[] args){
int num1=3;
int num2=6;
System.out.println("运算之前:num1="+num1+"\tnum2="+num2);
num1+=num2;
System.out.println("运算之后:num1="+num1+"\tnum2="+num2);
}
}
运行结果:
运算之前:num1=3 num2=6
运算之后:num1=9 num2=6
简洁表达式范例:
位运算符
&(按位与)、|(按位或)、^(异或,相同为0,不同为1)
~(取反)、<<(左移位)、>>(右移位)、>>>(无符号右移)
在Java中所有的数据都是以二进制数据的形式进行运算,如果一个int型的变量,要采用位运算时则,必须将其变为二进制数据,每一位二进制与、或、异或操作结果:
实例:
public class Demo10_12{
public static void main(String[] args){
int num1=3;
int num2=6;
System.out.println("num1&num2="+(num1&num2));
System.out.println("num1|num2="+(num1|num2));
System.out.println("num1^num2="+(num1^num2));
}
}
运行结果:
num1&num2=2
num1|num2=7
num1^num2=5
关于二进制的运算可以关注下一小节。