2021年1月1日
这是2021年的第一篇Java学习记录,以后坚持每周更新6次。
今年希望自己的Java学习之路能够顺顺利利,找到一份好工作。
一、三元表达式
练习:
1. 判断两个数是否相等
2. 有如下三个人的身高:165cm、183cm、135cm,通过三元表达式,求出三人中最高的一个人。
二、键盘录入
之前程序的数据都是直接写死在程序中的,修改和使用十分不便。所以Java官方提供了键盘录入,使我们可以在不修改程序的前提下,通过键盘来动态的录入数据。
需要用的类:Scanner
Scanner类在java.util包下
2.1 步骤
1. 创建对象
java.util.Scanner sc = new java.util.Scanner(System.in);
2. 接收数据
int a = sc.nextInt();
3. 处理数据
接收数据的常见方法:
nextInt() 接收整数
nextDouble() 接收小数
nextLine() 接收字符串
三、导包
如果在一个类中想要使用其它包下的类,我们可以通过固定的格式将这个包声明在类的最上方,然后在这个类中就可以直接使用指定包下的类。
3.1 导包的格式
关键字:import
注意事项:
1. 导入的包一定要声明在所有类的最上方
2. java.lang包下类不需要导包就能使用
3. 导包格式如下:
1. import 包名.类名; 如:import java.util.Scanner;
2. import 包名.*; 如:java.util.*;
注意:建议选择具体到类名的。
3.2 使用导包简化键盘录入步骤
1. 导包
import java.util.Scanner;
2. 创建对象
Scanner sc = new Scanner(System.in);
3. 接收数据
int x = sc.nextInt();
4. 处理数据
//1. 导包
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//2. 创建对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
//3. 接收数据
int x = sc.nextInt();
//4. 处理数据
System.out.println(x);
}
}
接收数据的常见方法:
nextInt() 接收整数
nextDouble() 接收小数
nextLine() 接收字符串
/*
判断两个数是否相等
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
String s = x == y ? "相等" : "不相等";
System.out.println(s);
}
}
/*
求三个数的最大值
*/
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
System.out.println("请输入第三个整数:");
int z = sc.nextInt();
int temp = x > y ? x : y;
int max = temp > z ? temp : z;
System.out.println("最大值为:" + max);
}
}
四、流程控制语句
通过观察,我们知道程序执行顺序对结果有很直接的影响。有时候我们也会通过不同的执行顺序来达到我们想要的效果。
4.1 流程控制语句的分类
顺序结构
分支结构
循环结构
五、顺序结构
所有语言,包括Java默认的就是顺序结构,也就是程序是从上到下执行的。
public class Demo {
public static void main(String[] args) {
int a = 3;
int b = 5;
System.out.println(a); //3
System.out.println(b); //5
System.out.println("over"); //over
}
}
六、分支结构
一个程序在执行到某处的时候,可以有多条路进行选择,这多条路不可能同时都执行,也不会一条都不会执行,而是只能执行其中一条。像这种结构就是分支结构。
6.1 分类
if语句
switch语句
6.2 if语句
① if语句的第一种格式
if(关系表达式){
语句体;
}
格式的解释:
1. 关系表达式的结果必须为boolean类型,要么是true、要么是false
2. 如果结果为true,那么执行大括号中的语句体
3. 如果结果为false,那么不执行大括号中的语句体,而是执行if语句下方的内容
public class IfDemo {
public static void main(String[] args) {
int a = 5;
if(a == 3){
System.out.println("进入了if语句中");
}
System.out.println("over");
}
}
练习:
键盘录入一个数,并判断这个数是整数还是小数(根据题意的规则为:先输入一个小数,如果小数点后有非0数字那么就认为是小数,如果小数点只有0那么就认为是整数)
如: 12.35 小数 12.0 整数
/*
键盘录入一个数,并判断这个数是整数还是小数(根据题意的规则为:先输入一个小数,如果小数点后有非0数字那么就认为是小数,如果小数点只有0那么就认为是整数)
如: 12.35 小数 12.0 整数
*/
import java.util.Scanner;
public class IfTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个数:");
//原来的数
double d = sc.nextDouble();
//经过强制数据类型转换之后的数
int dd = (int)d;
//用原来的数减去强制转换之后的数
double result = d - dd;
//如果结果等于0那就证明是整数,如果结果不等于0那就证明是小数
if(result == 0) {
System.out.println(d + "是整数");
}
if(result != 0) {
System.out.println(d + "是小数");
}
}
}
② If语句的第二种格式
if(关系表达式){
语句体1;
}else{
语句体2;
}
格式的解释:
1. 关系表达式的结果必须为boolean类型,要么是true、要么是false
2. 如果结果是true,那么执行语句体1
3. 如果结果是false,那么执行语句体2
public class IfDemo2 {
public static void main(String[] args) {
int a = 3;
/*
三元表达式可以和if语句的第二种格式互相转换
注意事项:
1. 三元表达式可以完成的,if语句都可以完成
2. 三元表达式不能完成的,if语句也可以完成
*/
//System.out.println(a == 3 ? "a等于3" : "a不等于3");
if(a == 3){
System.out.println("a等于3");
}else{
System.out.println("a不等于3");
}
System.out.println("over");
}
}
练习:使用if语句改进之前练习
1. 判断两个数是否相等
2. 求三个数的最大值
3. 判断一个数是奇数还是偶数
/*
需求1. 判断两个数是否相等
*/
import java.util.Scanner;
public class IfTest2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
/*
if(x == y){
System.out.println("相等");
}else{
System.out.println("不相等");
}
*/
}
}
/*
需求2. 求三个数的最大值
*/
import java.util.Scanner;
public class IfTest3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int x = sc.nextInt();
System.out.println("请输入第二个整数:");
int y = sc.nextInt();
System.out.println("请输入第三个整数:");
int z = sc.nextInt();
//定义一个变量,用来接收最大值
int max = 0;
if(x > y){
/*
x大于y才会进入到这里(也就是说只有x才有资格和z比较)
我们只需要让x和z进行比较求出最大值即可
*/
if(x > z){
max = x;
}else{
max = z;
}
}else{
/*
y大于x才会进入到这里(也就是说只有y才有资格和z比较)
我们只需要让y和z进行比较求出最大值即可
*/
if(y > z){
max = y;
} else{
max = z;
}
}
//打印最大值
System.out.println("最大值为:" + max);
}
}
/*
需求3. 判断一个数是奇数还是偶数
*/
import java.util.Scanner;
public class IfTest4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int x = sc.nextInt();
if(x % 2 == 0){
System.out.println(x + "是偶数");
}else{
System.out.println(x + "是奇数");
}
}
}
③ If语句的第三种格式
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}
...
else{
语句体n;
}
格式的解释:
1. 关系表达式的结果必须为boolean类型,要么是true,要么是false
2. 如果关系表达式1的结果为true,那么执行语句体1
3. 如果关系表达式1的结果为false,那么会看关系表达式2的结果是true还是false
4. 如果关系表达式2的结果为true,那么执行语句体2
5. 如果关系表达式2的结果为false,那么会看关系表达式3的结果是true还是false
...
如果都为false,那么会执行else中的内容
注意事项:
1. else可以省略
2. else只能放在最后
成绩等级分类:
0 - 59 不及格
60- 69 中等
70- 89 良好
90-100 优秀
/*
需求:
成绩等级分类:
0 - 59 不及格
60- 69 中等
70- 89 良好
90-100 优秀
*/
import java.util.Scanner;
public class IfTest5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入您的成绩:");
int score = sc.nextInt();
if(score >= 0 && score < 60){
System.out.println("不及格");
}else if(score >= 60 && score < 70){
System.out.println("中等");
}else if(score >= 70 && score < 90){
System.out.println("良好");
}else if(score >= 90 && score <= 100){
System.out.println("优秀");
}else{
System.out.println("您录入的数据非法,请重新录入!");
}
}
}
6.3 switch语句
① 格式及解释
switch (表达式) {
case 值1 :
语句体1;
break;
case 值2 :
语句体2;
break;
case 值3 :
语句体3;
break;
...
default :
语句体n;
break;
}
格式的解释:
1. switch 是一个关键字,切换的意思。表示了这是一个switch语句
2. case 是一个关键字,情况的意思。会比对表达式中的值是否和自己后面的值相同
如果相同的话,那么就执行自身下方的语句体
3. break 是一个关键字,破坏、打断的意思。用来退出switch语句
4. default 是一个关键字,默认的意思。如果所有的情况都不匹配,那么会执行default下面的内容
② switch语句的注意事项
1. 表达式的值可以是:
byte、short、int、char
jdk5之后:枚举
jdk7之后:字符串String
2. case后面的值只能是常量
3. break可以省略吗?可以省略,但是会发生穿透现象。
4. default可以省略吗?可以省略。
5. default一定要放在最后吗?可以放在其它位置,但是建议放在最后。
练习:
用switch语句完成 春夏秋冬的判断
12 1 2 冬季
3 4 5 春季
6 7 8 夏季
9 10 11 秋季
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int month = scan.nextInt();
switch(month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default :
System.out.println("输入错误!!!");
}
}
}