第三章
运算符
运算符是一-种特殊的符号,用以表示数据的运算、赋值和比较等。
算术运算符
算术运算符是对数值类型的变量进行运算的
取模(%)公式:a%b=a-(int)a/b*b
代码演示
public class hello1{
public static void main(String[] args){
System.out.println(10%3);
System.out.println(-10%3);
System.out.println(10%-3);
}
}
运行结果
前++ 和后++的区别(–一个道理)
前++:++i先自增后赋值
后++:i++先赋值后自增
代码演示
public class hello1{
public static void main(String[] args){
int j=8;
int k=j++;
int i=8;
int l=++i;
System.out.println("k="+k);
System.out.println("l="+l);
}
}
运行结果
练习题
public class hello1{
public static void main(String[] args){
int i=8;
i=i++;//计算过程:temp=i;i=i+1;i=temp
int k=8;
k=++k;//计算过程:k=k+1;temp=k;k=temp
System.out.println("i="+i);
System.out.println("k="+k);
}
}
运行结果
public class hello1{
public static void main(String[] args){
int i1 = 10;
int i2 = 20;
int i = i1++;
System.out.print("i="+i);
System.out.println("i2="+i2);
i=--i2;
System.out.print("i="+i);
System.out.println("i2="+i2);
}
}
运行结果
假如还有59天放假,问:合xx个星期零xx天
public class hello1{
public static void main(String[] args){
// 1.假如还有59天放假,问:合xx个星期零xx天
int days=59;
int weeks=days/7;
int leftdays=days%7;
System.out.println("59天相当于"+weeks+"周"+leftdays+"天");
}
}
运行结果
定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为: 5/9*(华氏温度-1 00),请求出华氏温度对应的摄氏温度。[234.5]
public class hello1{
public static void main(String[] args){
double huashi=243.5;
double sheshi=5.0/9*(huashi-100);
System.out.println(huashi+"华氏度相当于"+sheshi+"摄氏度");
}
}
运行结果
关系运算符
-
关系运算符的结果都是boolean型,也就是要么是true,要么是false
-
关系表达式经常用在if结构的条件中或循环结构的条件中
-
关系运算符组成的表达式,我们称为关系表达式。a> b
-
比较运算符" = =“不能误写成”=
代码演示
public class hello1{
public static void main(String[] args){
int a = 9;//温馨提示: 开发中,不可以使用a, b
int b=8;
System.out.println(a > b); //T
System.out.println(a >= b); //T
System.out.println(a <= b); //F
System.out.println(a < b);//F
boolean flag=a<b;
System.out.println("flag="+flag);
}
}
运行结果
逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
注意
- &与&&(逻辑与和短路与)的区别:不管怎样&(逻辑与)会将所有的条件判断一遍,&&(短路与)当条件为假时候停止后面的判断退出
- |与||(逻辑或和短路或)的区别:不管怎么样|(逻辑或)会将所有的条件判断一遍,||(短路或)当条件为真时停止后面的判断退出
- a^b异或操作,相同为flase不同为true
- !a取反操作
代码演示
public class hello1{
public static void main(String[] args){
int a = 9;
int b=8;
if(a<10|++b>4){
System.out.print("这就是逻辑或");
System.out.println("a="+a+"b="+b);
}
if(a<10||++b>4){
System.out.print("这就是短路或");
System.out.println("a="+a+"b="+b);
}
if(a<8&++b>4){
System.out.print("这就是逻辑与");
}
System.out.print("这就是逻辑与");
System.out.println("a="+a+"b="+b);
if(a<8&&++b>4){
System.out.print("这就是短路与");
}
System.out.print("这就是短路与");
System.out.println("a="+a+"b="+b);
}
}
public class hello1{
public static void main(String[] args){
System.out.println(60>20);
System.out.println(!(60>20));
System.out.println((6>20)^(6<20));
}
}
运行结果
练习题
代码
//写出每题的输出结果
public class hello1{
public static void main(String[] args){
int x=5;
int y=5;
if(x++==6 & ++y==6){
x=11;
}
System.out.println("x=" +x+"y="+y);//x=6,y=6
x=5;
y=5;
if(x++==6 && ++y==6){
x=11;
}
System.out.println("x=" +x+"y="+y);//x=6,y=5
x=5;
y=5;
if(x++==5 |++y==5){
x=11;
}
System.out.println("x=" +x+"y="+y);//x=11,y=6
x=5;
y=5;
if(x++==5||++y==5){
x=11;
}
System.out.println("x=" +x+"y="+y);//x=11,y=5
boolean a=true;
boolean b=false;
short z=46;
if( (z++==46)&& (b=true) )z++;//y=true这个是一个赋值语句为true
if((a=false)||(++z==49)) z++;
System.out.println("z="+z);
}
}
运行结果
赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
特点
- 运算顺序从右往左,也就是先把等号右边的值都给算完,在赋值int num= a+b+ C;
- 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
- 复合赋值运算符等价于比如: a+= 3;等价于a=a+3;
- 复合赋值运算符会进行类型转换。
三元运算符
公式:条件表达式?表达式1:化表达式2;
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
案例演示
public class hello1{
public static void main(String[] args){
int a=10;
int b=20;
int result=a>b?++a:++b;
System.out.println(result);
}
}
运行结果
使用细节
- 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换或强制转换)
- 三元运算符可以转成if–else语句
运算符优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一 -行运算符总优先于下一行。
- 只有单目运算符、赋值运算符是从右向左运算的。