1.运算符
1.1关系运算符
>(是否大于) <(是否小于) >=(是否大于等于) <=(是否小于等于) !=(是否不等于) == (是否等于)
关系运算符的返回的结果必须是一个布尔类型的数据
package com.qfedu.a_operation;
public class Demo1 {
public static void main(String[] args) {
//关系运算结果都是布尔类型的数据
boolean ret = (3 > 4);//把 3 > 4 的结果赋值给 ret
System.out.println(ret);
boolean ret1 = 3 < 4;
System.out.println(ret1);//true
boolean ret2 = 1 <= 3;
System.out.println(ret2);//true
boolean ret3 = (3 != 3);//false
System.out.println(ret3);
boolean ret4 = (3 == 1);
System.out.println(ret4);//false
}
}
1.2逻辑运算符
返回的结果也是一个布尔类型非数据
与: &&
语法格式: 条件1 && 条件2 && …
条件的返回值必须是布尔类型的数据
条件1和条件2都为true的时候整体的结果返回的是true。条件1和条件2只要一个为false就整体false
银行里面的保险柜钥匙和密码
或:||
语法格式: 条件1 || 条件2 || …
条件的返回值必须是布尔类型的数据
条件1和条件2都为false的时候才为false,只要一个为true就为true
宿舍里面的钥匙:你拿一把,亲室友拿一把。 你的丢了。你室友可以开。除非两个都丢了
非: !
语法格式:!条件
取反
package com.qfedu.a_operation;
public class Demo2 {
public static void main(String[] args) {
// 逻辑与
boolean ret = (3 > 4) && (5 > 2);
// false && true
// 与 只要一个条件为false,就整体为false
System.out.println(ret);// false
boolean ret1 = 4 >= 3 && 5 > 2 && 7 < 9;
// true && true && true
System.out.println(ret1);
// 逻辑或 两个为flase才为false,只要一个为true就为true
boolean ret2 = (3 > 8) || (5 > 2);
System.out.println(ret2);// true
boolean ret3 = (4 > 5) || (5 > 6) || (7 > 8) || (9 > 10);
System.out.println(ret3);
//取反
boolean ret4 = !(3 > 4);
System.out.println(ret4);//true
}
}
1.3逻辑运算符的断路原则
逻辑与的断路原则:
条件1 && 条件2&&条件3…
如果条件1为false的话,整体就为false。那么条件2和条件3就不执行了
是因为条件1已经确定为false了,后面的多个条件对结果没有影响了。java为了提高代码的执行效率。就不执行后面的条件了
逻辑或的断路原则:
条件1 || 条件2||条件3…
如果条件为true的话,整体就为true。那么后面的条件就不再执行了
是因为条件1已经确定为true了,后面的多个条件对结果没有影响了。java为了提高代码的执行效率。就不执行后面的条件了
package com.qfedu.a_operation;
public class Demo3 {
public static void main(String[] args) {
int num = 10;
//3 > 4 false
//(++num > 9) 就没有执行
//逻辑与的断路原则
boolean ret = (3 > 3) && (++num > 14);
System.out.println(ret);//false
System.out.println(num);//10
//逻辑或的断路原则
int num1 = 20;
boolean ret1 = 3 > 2 || ++num1 > 20;
System.out.println(ret1);//true
System.out.println(num1);//20
}
}
总结:
算术运算符 加减乘除取余
关系运算符 大于 小于 大于等于 小于等于 不等于 等于等于
逻辑运算符 且 或 非
2.分支结构【重点】
先学语法格式和意思
生活中有分支:是一种选择
程序中也是一种选择
2.1if 分支
语法格式:
if (条件) {
语句体
}
条件的返回值必须是布尔类型的数据
执行流程:如果条件为true,就会执行大括号里面的语句体。如果条件为false,跳过大括号去执行下面的代码
package com.qfedu.a_operation;
public class Demo4 {
public static void main(String[] args) {
int money = 10;
(money > 8) {
System.out.println("今天吃顿好的,吃个黄焖鸡");
}
System.out.println("程序结束");
// if (money > 8) 可以省略大括号
// System.out.println("今天吃顿好的,吃个黄焖鸡");
//
}
}
2.2if-else 分支
语法格式:
if (条件) {
语句体1
} else {
语句体2
}
执行流程:如果条件为true的话吗,执行语句体1跳过else后面大括号的语句体2 ,往下执行。
如果条件为false的话,跳过语句体1去执行语句体2。二者只选择其一
package com.qfedu.a_operation;
public class Demo5 {
public static void main(String[] args) {
int a = 20;
if (a > 20) {
System.out.println("今天中午吃泡面,加蛋加肠");
} else {
System.out.println("喝西北风");
}
System.out.println("程序结束");
}
}
2.3if-else if()分支
语法格式
if (条件1) { 语句体1 } else if (条件2) { 语句体2 } else if (条件3) { 语句体3 } else { 语句体 }
执行流程:如果条件1位true 执行语句体1,其他不执行。,一定要注意一句话。只要遇到条件为true就执行当前条件后面的与语句体。跳过后面的额外语句,执行非if-else语句
package com.qfedu.a_operation;
public class Demo6 {
public static void main(String[] args) {
/*
* 学生的成绩:
* 90-100 :打印秀儿
* 80-90:良好
* 70-80:一般
* 60-70:及格
* 60以下:叫家长
*
* */
int score = 80;
if (score >= 90 && score <= 100) {
System.out.println("秀儿");
} else if (score >= 80 && score < 90) {
System.out.println("良好");
} else if (score >= 70 && score < 80) {
System.out.println("一般");
} else if (score >= 60 && score < 70) {
System.out.println("及格");
} else {
System.out.println("叫家长");
}
System.out.println("程序结束");
}
}
2.4switch-case 分支
也是一种选择,只要满足当前的条件就可以执行当前的操作
表达式:int a = 10 3 > 4
语法格式:
switch (表达式) { case 常量1: 语句体1; break; case 常量2: 语句体2; break; case 常量3: 语句体3; break; ... default: 语句体n; break; }
执行流程:switch后面有个小括号,小括号里面是表达式,会产生一个值,这个值会和下面的case常量做匹配。如果匹配到就执行当前的语句体
package com.qfedu.a_operation;
public class Demo9 {
public static void main(String[] args) {
/**
* 按钮1 给爸爸打电话
* 按钮2 给妈妈打电话
* 按钮3 给爷爷打电话
* 按钮4 给奶奶打电话
* 点击其他按钮 报警
*
*/
int a = 3;
switch (a) {
case 1:
System.out.println("给爸爸打电话");
break;
case 2:
System.out.println("给妈妈打电话");
break;
//break;终止打断的意思
case 3:
System.out.println("给爷爷打电话");
break;
case 4:
System.out.println("给奶奶打电话");
break;
default:
System.out.println("报警");
break;
}
}
}
package com.qfedu.a_operation;
import java.util.Scanner;
public class Demo10 {
public static void main(String[] args) {
//找规律,因为你是哦匹配的
//学生成绩使用swicth-case来写
Scanner sc = new Scanner(System.in);
System.out.println("输入吧:");
int score = sc.nextInt();
switch (score / 10) {
case 10:
System.out.println("秀儿");
break;
case 9:
System.out.println("秀儿");
break;
case 8:
System.out.println("良好");
break;
case 7:
System.out.println("一般");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("叫家长");
break;
}
}
}
面试题:
switch(表达式):
常量的是什么数据类型的:
byte short int 可以 long 你不可以
char 可以
String jdk 1.7以后可以
float double 都不可以
boolean 不可以
2.5案例
控制台打印如下的内容:
请插卡,输入密码:
1.密码正确if
选择办理的业务:1 取款 2 存款 3 修改密码
下面分四种情况
1:取款 取款的业务逻辑if
1.取款的金额大于账户余额 if
2.取款金额小于账户余额 else
2:存款 存款的业务逻辑else if
3:修改密码 修改密码的业务逻辑 else if
1.先确认原始密码成功才让你修改if
输入两次新的密码又要进行判断了
if 两次新密码一样的
else两次新密码不一样的
2.确认原始密码失败else
4:输入的其他的 else
2.密码错误else
package com.qfedu.a_operation;
import java.util.Scanner;
public class Demo12 {
public static void main(String[] args) {
int password = 123456;//银行密码 123456
int acount = 1000;//卡里的余额
System.out.println("请输入您的密码:");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();//取到控制台的手动输入的值
//拿到控制台的输入的值 和 当前变量 password 做对比
if (number == password) {
//密码正确的一种的一种情况
System.out.println("密码正确,登录成功!!!");
System.out.println("请选择办理的业务:1 取款 2 存款 3修改密码");
Scanner scanner2 = new Scanner(System.in);
int access = scanner2.nextInt();//选择办理业务的序号
System.out.println(access);
if (access == 1) {
//取款的业务
//请输入你取款的金额
System.out.println("请输入您取款的金额:");
Scanner scanner3 = new Scanner(System.in);
int outMoney = scanner3.nextInt();
System.out.println("您输入的取款金额为:"+outMoney);//取款的金额
//判断输入的金额是否大于当期账户余额
if (outMoney > acount) {
//余额不足的情况
System.out.println("余额不足");
} else {
//取款金额少于你的当前账户余额的。可以让你取
int acount1 = acount - outMoney;//取完钱以后的余额
System.out.println("您卡里的余额为:" + acount1);
System.out.println("请取走您的卡片。欢迎下次光临");
System.exit(0);//
}
} else if (access == 2) {
//存款的业务
System.out.println("请输入您存款的金额:");
Scanner scanner4 = new Scanner(System.in);
int inMoney = scanner4.nextInt();//存款的金额
int acount2 = acount + inMoney;
System.out.println("存款成功,当前余额为:" + acount2);
System.exit(0);
} else if (access == 3) {
//修改密码的业务
System.out.println("请输入原始密码:");
Scanner scanner5 = new Scanner(System.in);//还要再次输入正确的密码
int password1 = scanner5.nextInt();
if (password1 == password) {
//原始密码正确
System.out.println("请输入新的密码:");
Scanner scanner6 = new Scanner(System.in);
//重新修改的新密码
int newPassword = scanner6.nextInt();
System.out.println("再次输入新的密码:");
Scanner scanner7 = new Scanner(System.in);
int newPassword1 = scanner7.nextInt();
//两个新密码 做对比 又要写if-else
if (newPassword == newPassword1) {
//两次的新密码我才让你修改
password = newPassword;
System.out.println("当前新密码为:" + password);
System.out.println("修改成功,退出");
System.exit(0);
} else {
//两次新密码不一样
System.out.println("两次密码不一样。退出");
System.exit(0);
}
} else {
//原始密码错误
System.out.println("原始密码错误,退出");
System.exit(0);
}
} else {
//没有这样的业务
System.out.println("没有这样的业务");
System.exit(0);
}
} else {
//密码错误的情况
System.out.println("密码错误");
}
}
}
扩展知识点
在声明变量的时候,直接对值进行初始化 int score= 80;
如果声明一个变量,在控制台中输入一个值,赋值给声明好的变量
1.需要导包
import java.util.Scanner;
2.创建一个对象,变量
Scanner sc = new Scanner(System.in);
3.通过sc变量可以获取控制台的数据
获取int类型的数据 sc.nextInt();
获取float类型的数据 sc.nextFloat();
获取double类型的数据 sc.nextDouble();
获取String类型化的数据 sc.nextLine();
获取char类型的数据 sc.nextLine().charAt(0);
package com.qfedu.a_operation;
import java.util.Scanner;
public class Demo7 {
public static void main(String[] args) {
//这行代码是固定的
Scanner sc = new Scanner(System.in);
System.out.println("亲,请输入:");
//控制台执行 输入一个int类型的数据,控制台进行捕捉将int类型的数据赋值给了i
// int i = sc.nextInt();//在控制台输入一个数字,赋值给了当前代码的i变量s
// System.out.println(i);
// double d = sc.nextDouble();//控制台输入double类型的数据
// System.out.println(d);
//String类型的数据
// String str = sc.nextLine();
// System.out.println(str);
//char类型的数据
//abcdefg
char c = sc.nextLine().charAt(0);
System.out.println(c);
}
}
package com.qfedu.a_operation;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.println("请输入你的成绩:");
int score = sca.nextInt();
//合法性的判断
if (score < 0 || score > 100) {
System.out.println("亲,你个逗比输错了!!!");
//退出程序
System.exit(0);
}
if (score >= 90 && score <= 100) {
System.out.println("秀儿");
} else if (score >= 80 && score < 90) {
System.out.println("良好");
} else if (score >= 70 && score < 80) {
System.out.println("一般");
} else if (score >= 60 && score < 70) {
System.out.println("及格");
} else {
System.out.println("叫家长");
}
}