送给读者的话:卢思浩在 《愿有人陪你颠沛流离》中说:每个人都在用力活着,用他自己的方式。或许你很羡慕他的生活状态,又或许你看不到他努力的方式。你无须弄懂他全部的故事,也不要妄加猜测和指责。你只要知道你在努力的同时,有很多人也同样在努力,你永远不是孤身一人。
一.算术运算符
注意事项:
(1) +的几种作用:
a.加法
b.正数
c.字符串连接符
(2)除法的时候要注意一个问题:
a.整数相除,只能得到整数
b.要想得到小数,可以*1.0
(3)/和%的区别
a./获取的是操作的商,%获取的是除法的操作的余数
b.++和--的应用
c.单独使用效果相同
d.参与运算使用,在操作数的前后效果不同
经典例题如下:
class OperatorTest{
public static void main(String[] args){
int a = 10;
int b = 10;
int c = 10;
a = b++; //a=10, b = 11 c=10
c = --a; //a= 9,b = 11,c=9
b = ++a; //a=10,b=10,c = 9
a = c--; //a= 9 ,b= 10,c= 8
//a:9,b:10,c:8
System.out.println("a:"+a+",b:"+b+",c:"+c);
System.out.println("---------------------") ;
int x = 4;
int y = (x++)+(++x)+(x*10) ;
//x = 4 ,5 ,6
//int y = 4 + 6 +(6*10)
//x:6,y:70
System.out.println("x:"+x+",y:"+y) ;
}
}
二. 赋值运算符
基本的赋值运算符: = ,
扩展的赋值运算符: +=, -=, *=, /=, %=
经典例题:
short s = 1; s = s + 2;有没有问题?如果有怎么解决?
short s = 1; s += 2;有没有问题?如果有怎么解决?
short s = 1; s = s + 2有问题,因为s+2会默认提升为int型
然后在进行运算.改为short=(short)s1+2li即可.
short s = 1; s += 2没有问题,扩展的赋值运算符存在默认的强制类型转换.
即: s+=1 等价于 short=(short)s+2
三. 关系(比较)运算符
注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“== ”不能误写成“=” 。
1:注意2的时候举例
System.out.println(a==b);
System.out.println(a=b);
2:赋值的时候要注意类型问题
int x = 10;
int y = 10;
boolean flag = (x == y);
boolean flag = (x = y);
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
boolean b4 = (b1 = b2);
四.逻辑运算符
逻辑运算符: & | ^ !
扩展的逻辑运算符: && ||
经典例题:
逻辑单与和逻辑双与的区别:
相同点:都是有false则false
不同点:当时符号位&&时,左边为flase,则右边不执行(扩展的逻辑运算符的短路效果)
例: int x=3,y=4;
boolean flag= ((++x==x)&&(y++==y)) 也可以写成 boolean flag= x++==x&&y++==y;(运算优先级)
System.out,println(x); //4
System.out,println(y); //4
System.out,println(flag); //false
同理可得:逻辑单或和逻辑双或:
相同点:都是有true则true
不同点:当时符号位||时,左边为true,则右边不执行(扩展的逻辑运算符的短路效果)
int x=3,y=4;
boolean flag= ((x++==x)||(y++==y))
System.out,println(x); //4
System.out,println(y); //4
System.out,println(flag); //false
五. 位运算符
注意:位运算是直接对二进制进行运算。
经典例题1:
请用最有效的方式写出2乘以8 的结果.
2<<2
经典例题2:
请实现两个整数变量的交换.
a: 第三方变量()
temp=a;
a=b;
b: 加法方式
a = a + b;
b = a–b;
a = a–b;
c: ^异或位运算符
d: 一句话搞定:
a = (a+b) - (b=a)
六.三目运算符
格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
经典例题:
使用三元运算符完成如下练习
比较两个数是否相等
获取两个数中最大值
获取三个数中最大值
//比较两个数是否相等
import java.util.Scanner;
class OperatorDemo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("input a num");
int rs1=sc.nextInt();
System.out.println("input another num");
int rs2=sc.nextInt();
boolean x =rs1==rs2;
System.out.println(x);
}
}
//获取两个数中最大值
import java.util.Scanner;
class OperatorDemo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("input a num");
int rs1=sc.nextInt();
System.out.println("input another num");
int rs2=sc.nextInt();
int max=(rs1>rs2)?rs1:rs2;
System.out.println(max);
}
}
//获取三个数中最大值
import java.util.Scanner;
class OperatorDemo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("input a num");
int rs1=sc.nextInt();
System.out.println("input another num");
int rs2=sc.nextInt();
System.out.println("input last num");
int rs3=sc.nextInt();
int max=(rs1>rs2)?((rs1>rs3)?rs1:rs3):((rs2>rs3)?rs2:rs3);
System.out.println(max);
}
}
七.运算符优先级表:
希望这篇分享能帮到幸运的你,小伙伴加油!