运算符
1、运算符和表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | |
- | 减 | |
* | 乘 | |
/ | 除 | 取商 |
% | 取余 | 取余数 |
2、字符的加操作
public static void main(String[] args) {
int i=10;
char z='Z';
System.out.println(i+z);
}
}
结果是:100
为什么是100?
因为采用的是Acsll码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbBsxviR-1629479695793)(_v_images/20210809165930317_3664.png)]
3、字符串的+操作
字符串的9+操作其实就是拼接。
public static void main(String[] args) {
int i=10;
String z="heima";
System.out.println(i+z);
}
}
结果:10heima
4、赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a*b的值给a |
/= | 除后赋值 | a/=b,将a/b的值给a |
%= | 取余后赋值 | a%=b,将a%b的值给a |
public class woek2 {
public static void main(String[] args) {
int i=10;
i+=20;
System.out.println(i);
}
}
结果:30
public class woek2 {
public static void main(String[] args) {
int i=10;
i=+20;
System.out.println(i);
}
}
结果:20
为什么+=和=+输出的结果不一样?
因为+=是先+后赋值,输出的时候i已经是30了,而=+是先赋值后加,这里赋值的是20,即使加上了但是没有再次赋值,i在内存中是数值还是20。
short s = 2;
s += 20; //不会报错
s = s + 30; //报错
s += 20;不会报错是因为赋值运算符隐含了强制类型转换,而下面的报错是因为s原本是short型,30是int型,s最终的类型是short型,范围大的转换成小的需要强转。
s = (short) (s + 30);
5、自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
public class woek2 {
public static void main(String[] args) {
int i=1;
i++;
System.out.println(i);
}
}
结果:2
注意
i++是先赋值后加,++i是先加后赋值
6、关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
示例:
public class woek2 {
public static void main(String[] args) {
int i=1;
int k=2;
System.out.println(i==k);
}
}
结果:false
7、逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
8、短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
&运行出错时继续执行后续程序,但是&&不会
9、三元运算符
格式:关系表达式?表达式1:表达式2
a>b?a:b
如果a>b返回true,运算结果为a,反之b
示例:
public class woek2 {
public static void main(String[] args) {
int i = 1;
int k = 2;
int num = i > k ? i : k;
System.out.println(num);
}
}
结果:2
10、练习
需求:需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是否相同。
public class woek2 {
public static void main(String[] args) {
twoTight();
}
public static void twoTight() {
int tightA = 180;
int tightB = 200;
//System.out.println(tightA == tightB);
System.out.println(tightA==tightB?true:false);
}
}
结果:false
需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
public class woek2 {
public static void main(String[] args) {
threeHe();
}
public static void threeHe() {
int A = 150;
int B = 210;
int C = 165;
int num = A > B ? A : B;
num = A > num ? A : num;
System.out.println(num);
}
}
结果:210
需求:大于等于90输出优秀,小于90并且大于等于60输出合格,小于60输出不合格
public static void main(String[] args) {
grand(90);
}
public static String grand(int count) {
String result = count >= 90 ? "优秀" : count < 90 && count >= 60 ? "合格" : "不合格";
System.out.println(result);
return result;
}
11、数据输入
使用Scanner类实现数据输入
步骤如下:
1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
import java.util.Scanner;
2、创建Scanner对象。
Scanner sc = new Scanner(System.in);
// 创建Scanner对象,sc表示变量名,其他均不可变
3、接收数据
int i = sc.nextInt();
// 表示将键盘录入的值作为int数返回。
示例:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int sc=scanner.nextInt();
System.out.println("sc:"+sc);
}
练习:
需求:一座寺庙里住着三个和尚,他们的身高必须经过测量得出,请用程序实现获取这三个和尚的最高身高。
import java.util.Scanner;
public class woek2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int A = scanner.nextInt();
int B = scanner.nextInt();
int C = scanner.nextInt();
int num = A > B ? A : B;
num = A > num ? A : num;
System.out.println("最大值:"+num);
}
}