一、运算符补充
1、比较运算符
(1)作用:做条件判断
(2)结果:布尔类型数据
符号 | 说明 |
---|---|
== | 判断符号前后是否相等,如果相等返回true;否则返回false |
‘>’ | 判断符号前是否大于符号后的数据,如果大于返回true;否则返回false |
< | 判断符号前是否小于符号后的数据,如果小于返回true;否则返回false |
>= | 判断符号前是否大于或者等于符号后的数据,如果大于或者等于返回true;否则返回false |
<= | 判断符号前是否小于或者等于符号后的数据,如果小于或者等于返回true;否则返回false |
!= | 判断符号前后是否不相等,如果不相等返回true;否则返回false |
public static void main(String[] args) {
int i = 10;
int j = 20;
boolean result01 = i==j;
System.out.println("result01 = " + result01);
boolean result02 = i!=j;
System.out.println("result02 = " + result02);
boolean result03 = i>j;
System.out.println("result03 = " + result03);
boolean result04 = i<j;
System.out.println("result04 = " + result04);
boolean result05 = i>=j;
System.out.println("result05 = " + result05);
boolean result06 = i<=j;
System.out.println("result06 = " + result06);
}
运行结果:
result01 = false
result02 = true
result03 = false
result04 = true
result05 = false
result06 = true
2、逻辑运算符
1.作用: 连接多个boolean表达式, 将多个判断连接在一起成为一个大的条件
2.结果: boolean型结果
符号 | 说明 |
---|---|
&&(与,并且) | 有假则假,符号前后有一个结果为false,整体就是false |
丨丨(或) | 有真则真,符号前后有一个结果为true,整体就是true |
!(非,取反) | 不是真,就是假;不是假,就是真 |
^(异或) | 符号前后结果一样为false;不一样为true true^true -> false false^false -> false true^false -> true false^true -> true |
public static void main(String[] args) {
int i = 10;
int j = 20;
int k = 10;
System.out.println((i > j) && (i == k));
System.out.println((i > j) || (i == k));
System.out.println(!(i > j));
System.out.println((i > j) ^ (i == k));
}
返回结果:
false
true
true
true
短路效果:
| && | 双与具有短路效果,双与是有假则假,如果符号前面为false,符号后面不执行了 |
| & | 单与没有短路效果,单与时有假则假,如果符号前面为false,符号后面会继续执行 |
| || | 双或具有短路效果,双或是有真则真,如果符号前面为true,符号后面不执行了 |
| | | 单或没有短路效果,单或是有真则真,如果符号前面为true,符号后面会继续执行 |
短路示例:
int a=10;
int b=20;
boolean result = (++a>100) & (++b>100);
System.out.println(result);
System.out.println(a); 11
System.out.println(b); 21
如果为&& 符号则结果为false,则后面不执行 b=20
3、三元运算符
1.格式:boolean表达式?表达式1:表达式2
2.执行流程:先走boolean表达式,如果是true,就走?后面的表达式1;否则就走:后面的表达式2
代码示例:
public class SanYuan {
public static void main(String[] args) {
// 需求1:定义一个变量代表分数,随意给这个变量一个值,判断这个分数是否及格
int score = 60;
String result = score>=60?"及格":"不及格";
System.out.println(result);
// 需求2:寺庙有2个和尚,身高分别为210 170,判断最高身高
int h1 = 210;
int h2 = 170;
String result1 = h1>h2?"和尚1高":"和尚2高";
System.out.println(result1);
// 需求3:寺庙有3个和尚,身高分别为210 170 150,判断最高身高
int h3 = 210;
int h4 = 170;
int h5 = 150;
String result2 = h3>h4?(h3>h5?"和尚3高":"和尚5高"):(h4>h5?"和尚4高":"和尚5高");
System.out.println(result2);
}
}
运行结果:
及格
和尚1高
和尚3高
二、Scanner键盘输入(需要关闭)
1.概述:java提前定义好的一个类
2.作用:通过键盘录入的形式将数据放到代码中参与运行
3.怎么用:
a.导包:为了找到我们想要使用的类 -> idea自动导包,不需要我们自己手动导包
import 包名.类名 import java.util.Scanner
b.创建对象:
Scanner 变量名 = new Scanner(System.in)
c.调用方法,实现键盘录入
变量名.nextInt() 录入int型整数的
变量名.next() 录入String字符串的
示例代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用方法,实现键盘录入
int data1 = sc.nextInt();
System.out.println("data1 = " + data1);
String data2 = sc.next();
System.out.println("data2 = " + data2);
//关闭scanner对象
sc.close();
Scanner sc1 = new Scanner(System.in);
int heShang1 = sc1.nextInt();
int heShang2 = sc1.nextInt();
int heShang3 = sc1.nextInt();
int temp = heShang1 >heShang2 ? heShang1 : heShang2;
int max = temp > heShang3 ? temp : heShang3;
System.out.println(max);
//关闭Scanner
sc.close();
}
补充:
next()于nextLine()的区别:
next()方法:遇到空格和回车就结束录入
nextLine()方法:遇到回车结束录入
示例代码:
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println(name);
sc.close();
三、Switch选择语句
1、基本使用
1.格式
初始化变量
switch(变量){
case 目标值:
执行语句1;
break;
case 目标值2:
执行语句2;
break;
case 目标值3:
执行语句3;
break;
...
default:
执行语句n;
break;
2.执行流程:
用初始化的变量的值和下面case后面的目标值做匹配,配上哪个case后面的目标值,就走哪个case对应的执行语句
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字:");
switch (sc.nextInt()){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入错误");
}
}
输入数字 1 返回结果 星期一
2、case的穿透性
如果case语句内没有break,则会往下穿透执行,直到遇到break或switch语句完成
3、JDK新特性Switch写法(yield)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字:");
String season = switch (sc.nextInt()) {
case 1, 2, 3 -> {
yield "春天";
}
case 4, 5, 6 -> {
yield "夏天";
}
case 7, 8, 9 -> {
yield "秋天";
}
case 10, 11, 12 -> {
yield "冬天";
}
default -> {
yield "输入错误";
}
};
System.out.println(season);
}
直接返回season的赋值
四、分支语句
1、if的第一种格式
1.格式: if(boolean表达式){
执行语句
}
2.执行流程:先判断if后面的boolean表达式,如果是true,就走if后面的执行语句
3.示例代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int data1 = sc.nextInt();
int data2 = sc.nextInt();
if(data1 > data2){
System.out.println("data1 > data2");
}
}
2、if的第二种格式
1.格式: if(boolean表达式){
执行语句1
}else{
执行语句2
}
2.执行流程:a.先走if后面的boolean表达式,如果是true,就走if后面的执行语句1
b.否则就走else后面的执行语句2
3.示例代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int data1 = sc.nextInt();
int data2 = sc.nextInt();
if(data1 > data2){
System.out.println("data1 > data2");
}else{
System.out.println("data1 < data2");
}
}
3、if的第三种格式
1.格式: if(boolean表达式){
执行语句1
}else if(boolean表达式){
执行语句2
}else if(boolean表达式){
执行语句3
}...else{
执行语句n
}
2.执行流程:从if开始挨个往下判断,哪个if条件成立了,就走哪个if对应的执行语句,如果以上所有的判断都不成立,就走else对应的执行语句n
3.示例代码:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int data1 = sc.nextInt();
int data2 = sc.nextInt();
if(data1 > data2){
System.out.println("data1 > data2");
}else if (data1 == data2){
System.out.println("相等");
}
}