From 4096e7019b75f1ba60d4007c93b0c23f243b3cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Tue, 28 Mar 2023 23:57:33 +0800 Subject: [PATCH 1/4] task --- ...72\347\241\200\345\244\215\344\271\240.md" | 247 ++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 "31 \346\235\216\346\254\243/20230328 Java\345\237\272\347\241\200\345\244\215\344\271\240.md" diff --git "a/31 \346\235\216\346\254\243/20230328 Java\345\237\272\347\241\200\345\244\215\344\271\240.md" "b/31 \346\235\216\346\254\243/20230328 Java\345\237\272\347\241\200\345\244\215\344\271\240.md" new file mode 100644 index 0000000..e409119 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20230328 Java\345\237\272\347\241\200\345\244\215\344\271\240.md" @@ -0,0 +1,247 @@ +# Java复习 + +## 语法 + +1. 区分大小写 +2. 方法名以小写字母开头。若有多个单词,则后面的每个单词首字母大写 +3. 标识符不可以用关键字 +4. 只能以英文字母、_、数字、$符号组成 +5. 中间不可以用空格,建议不要用中文(其他系统可能不融洽) + +## 结构 + +1. Java文件都是以类的形式存在 + +2. 类名要和文件名一致并且首字母要大写 +3. 数据类型(基本类型) + +## 基本数据类型(可以直接参与运算) + +### 整数型: + +##### byte=0 & num<=9); + + } +} +``` + + + +**2、判断一个字符数据是否是字母字符** + +**分析:** + +​ 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + +​ 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + +​ 3、判断完成之后,打印判断的结果。 + +```java +import java.util.Scanner; + +public class task1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个字母:"); + char num = sc.next().charAt(0); + System.out.println((num>=65 & num<=90)|(num>=97 & num<=122));//65-90A-Z 97-122a-z + } +} + +``` + + + +**3、判断指定的年份是否为闰年,请使用键盘录入** + +**分析:** + +​ 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + +​ 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + +```java +import java.util.Scanner; + +public class task2 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个年份:"); + int year = sc.nextInt(); + if (year%4==0 & year%100!=0 | year%400==0){ + System.out.println(year+"为闰年"); + }else { + System.out.println(year+"不是闰年"); + } + } +} +``` + + + +**4、判断一个数字是否为水仙花数,请使用键盘录入** + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, + +**分析:** + +​ 如:153 ---> 1×1×*1 + 5*×5×*5 + 3×*3×3 = 153; 就是水仙花数 + +​ 1、首先需要提供一个需要判断的3位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将3位数字的每一位上的数字拆分下来 + +​ b) 计算每位数字的3次幂之和 + +​ C) 用和值 和 原来的数字进行比较 + +​ D) 打印判断的比较结果即可 + +```java +import java.util.Scanner; + +public class task3 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个三位数:"); + int num = sc.nextInt(); + if(num>100 & num<1000){ + int g = num%10; + int s = num/10%10; + int b = num/10/10%10; + if (g*g*g+s*s*s+b*b*b==num){ + System.out.println(num+"是水仙花数"); + }else { + System.out.println(num+"不是水仙花数"); + } + } + } +} +``` + + + +**5、判断一个5位数字是否为回文数,使用键盘录入** + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321  23732  56665 + +**分析:** + +​ 1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将5位数字的万、千、十、个位数拆分出来 + +​ b) 判断比较万位和个位 、 千位和十位是否相等 + +​ 3、判断完成之后,打印判断的结果。 + +```java +import java.util.Scanner; + +public class task4 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入五位整数"); + int num = sc.nextInt(); + if(num>10000 & num<100000) { + int g = num % 10; + int s = num / 10 % 10; + int q = num / 1000 % 10; + int w = num / 10000; + if (w==g & q==s){ + System.out.println("万位和个位 、 千位和十位都相等"); + }else { + System.out.println("万位和个位 、 千位和十位不相等"); + } + } + } +} +``` + + + -- Gitee From c3b7c89dfa1daa9942b724b9b7aa4b4a3de64cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Fri, 31 Mar 2023 23:25:08 +0800 Subject: [PATCH 2/4] task --- ...2\347\241\200\344\275\234\344\270\2322.md" | 422 ++++++++++++++++++ 1 file changed, 422 insertions(+) create mode 100644 "31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" diff --git "a/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" "b/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" new file mode 100644 index 0000000..9435983 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" @@ -0,0 +1,422 @@ + + +# Java复习2.0 + +## **类型转换** + +### 自动类型转换 + +**底层原理** + +```java +byte a = 12 ; +int b = a; +System.out.println(b); // 12 +``` + + + +## 表达式的自动类型转换 + +- 小范围类型的变量会自动转换成当前较大范围的类型再运算 +- 表达式的最终结果类型由表达式中的最高类型决定。 +- 在表达式中,byte、short、char 是直接转换成int类型参与运算的。 + +## 强制类型转换 + +```java +//数据类型 变量2 = (数据类型)变量1、数据 +int a = 20; +byte b = (byte)a; +//类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错。 +//可以强行将类型范围大的变量、数据赋值给类型范围小的变量。 +``` + +## **运算符** + +## 算数运算符 + +| 符号 | 作用 | 说明 | +| ---- | ---- | :-------------------------------------------------: | +| + | 加 | 参考小学一年级 | +| - | 减 | 参考小学一年级 | +| * | 乘 | 参考小学二年级,与“×”相同 | +| / | 除 | 与“÷”相同,注意:在Java中两个整数相除结果还是整数。 | +| % | 取余 | 获取的是两个数据做除法的余数 | + +公式总结: + +个位 :数值 % 10 + +十位 :数值 / 10 % 10 + +百位 :数值 / 10 / 10 % 10 + +千位 :数值 / 10 / 10 / 10 % 10; + +... + +“+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串 + +## **自增自减运算符** + +| 符号 | 作用 | 说明 | +| ---- | ---- | --------------- | +| ++ | 自增 | 变量自身的值加1 | +| -- | 自减 | 变量自身的值减1 | + +###### ++ 和 -- 既可以放在变量的后边(放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1 ),也可以放在变量的前边(放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。 + +)。 + +###### ++ 、-- 只能操作变量,不能操作字面量的。 + +## 扩展赋值运算符(**扩展的赋值运算符隐含了强制类型转换**) + +| 符号 | 作用 | 说明 | +| ---- | ---------- | -------------------------------------------------------- | +| += | 加后赋值 | a+=b 等价于 a = (a的数据类型)(a+b); 将a + b的值给a | +| -= | 减后赋值 | a-=b 等价于 a = (a的数据类型)(a-b); 将a - b的值给a | +| *= | 乘后赋值 | a*=b 等价于 a = (a的数据类型)(a*b); 将a ***** b的值给a | +| /= | 除后赋值 | a/=b 等价于 a = (a的数据类型)(a/b); 将a **/** b的商给a | +| %= | 取余后赋值 | a%=b 等价于 a = (a的数据类型)(a%b); 将a **%** b的商给a | + +## 关系运算符 + +| 符号 | 说明 | +| ---- | ------------------------------------------------------- | +| == | a==b,判断a和b的值是否相等,成立为true,不成立为false | +| != | a!=b,判断a和b的值是否不相等,成立为true,不成立为false | +| > | a>b, 判断a是否大于b,成立为true,不成立为false | +| >= | a>=b,判断a是否大于等于b,成立为true,不成立为false | +| < | ay ? x:y; + max = max>z ? max:z; + System.out.println("3,4,1中的最大值是:"+max); + } +} + +``` + + + +## 6、案例:判断今年是否是闰年 + +闰年的判断标准是: + +​ 1)可以被4整除,但不可被100整除 + +​ 2)可以被400整除 + +![1557902649882](02_Java基础语法扩展作业图片/9.png) + +1. 定义一个int类型变量year,赋值为今年年份值 +2. 定一个一个boolean类型变量,用来保存这个年份是否是闰年的结果 +3. 输出结果 + +```java +public class task5 { + public static void main(String[] args) { + int year = 2023; + boolean p = year%4==0 & year%100!=0; + System.out.println(year+"是闰年吗"+p); + } +} + +``` + + + +## 7、华氏度转摄氏度 + +案例:小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 + +![1557903785834](02_Java基础语法扩展作业图片/1557903785834.png) + +![1557903814057](02_Java基础语法扩展作业图片/1557903814057.png) + +1. 定义一个double类型变量hua,存储华氏温度80 +2. 定义一个double类型变量she,存储摄氏温度,根据公式求值 +3. 输出结果 + +```java +public class task6 { + public static void main(String[] args) { + double hua = 80; + double she = (80-32)/1.8; + System.out.println("华氏温度(80度)转换为摄氏度是:"+she); + } +} + +``` + + + + + +# 拔高题 + +## 第一题 + +```java +如下代码的计算结果是:i=1 +int i = 1; +i *= 0.2; +i++; +System.out.println("i=" + i); +``` + +## 第二题 + +```java +如下代码的运算结果是: +int i = 2; +i *= i++; + +int j = 2; +j *= j+1; + +int k = 2; +k *= ++k; + +System.out.println("i=" + i);//4 +System.out.println("j=" + j);//6 +System.out.println("k=" + k);//6 +``` + +## 第三题 + +```java +如下代码的运算结果是:Not Equal +int a = 3; +int b = 1; +if(a == b){ + System.out.println("Equal"); +}else{ + System.out.println("Not Equal"); +} +``` + +## 第四题 + +```java +如下代码的运算结果是: +int a = 8, b = 3; +System.out.println(a>>>b);//1 +System.out.println(a>>>b | 2);//3 +``` + +## 第五题 + +如何用最有效的的方法计算2乘以8 + +```java +public class task7 { + public static void main(String[] args) { + System.out.println("2乘以8等于"+(2*8)); + } +} + +``` + -- Gitee From 1c16bb6a0b6d722da059e2357ea299e1bb43aa26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Mon, 3 Apr 2023 00:40:25 +0800 Subject: [PATCH 3/4] task --- ...2\347\241\200\344\275\234\344\270\2322.md" | 34 -- ...2\347\241\200\345\244\215\344\271\2403.md" | 381 ++++++++++++++++++ 2 files changed, 381 insertions(+), 34 deletions(-) create mode 100644 "31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" diff --git "a/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" "b/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" index 9435983..be0e107 100644 --- "a/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" +++ "b/31 \346\235\216\346\254\243/20230329 java\345\237\272\347\241\200\344\275\234\344\270\2322.md" @@ -125,40 +125,6 @@ byte b = (byte)a; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # 作业 ## 1、强制类型转换练习 diff --git "a/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" "b/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" new file mode 100644 index 0000000..06d0b34 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" @@ -0,0 +1,381 @@ +switch判断语句 + +## 题目1 + +模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果。 + +要求: + +​ 键盘录入三个整数,其中前两个整数代表参加运算的数据,第三个整数为要进行的运算(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算),演示效果如下: + +​ 请输入第一个整数: 30 + +​ 请输入第二个整数: 40 + +​ 请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法): 1 + +​ 控制台输出:30+40=70 + +### 训练提示 + +1. 用户录入了数据之后,用什么知识点去判断加减乘除四种不同的操作? + +### 解题方案 + +1. 使用switch判断语句完成。 + +### 操作步骤 + +1. 使用键盘录入三个变量。 +2. 使用switch判断语句对第三个变量进行判断,匹配要执行的操作。 +3. 在每一个case中分别对第一个变量和第二个变量进行不同的操作。 + +```java +import java.util.Scanner; + +public class task { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.println("请输入第一个整数"); + int a = scanner.nextInt(); + System.out.println("请输入第二个整数"); + int b = scanner.nextInt(); + System.out.println("请输入您想要进行的运算(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算)"); + int c = scanner.nextInt(); + switch(c){ + case 1: + System.out.println(a+"+"+b+"="+(a+b)); + break; + case 2: + System.out.println(a+"-"+b+"="+(a-b)); + break; + case 3: + System.out.println(a+"*"+b+"="+a*b); + break; + case 4: + System.out.println(a+"/"+b+"="+a/b); + break; + } + } +} + +``` + + + +if判断语句 + +## 题目2(训练) + +李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,李雷要不要以旧换新?请在控制台输出。 + +### 训练提示 + +1. 用什么知识点能够对不同购买方式的价格做判断? + +### 解题方案 + +1. 使用if...else语句判断 + +### 操作步骤 + +1. 计算不使用以旧换新时的花费。 +2. 计算使用以旧换新时的花费。 +3. 使用if..else语句判断哪种方式更省钱,并输出结果 + +```java +public class task1 { + public static void main(String[] args) { + int phone = 7988; + int num = 1500; + if(phone*0.8>phone-num){ + System.out.println("不使用以旧换新时的花费"); + }else { + System.out.println("使用以旧换新时的花费"); + } + } +} +``` + + + +循环语句 + +## 题目3(训练) + +已知2019年是猪年,请在控制台输出从1949年到2019年中所有是猪年的年份。 + +### 训练提示 + +1. 1949到2019有很多年?逐个判断这么多年份肯定要用循环。 +2. 用什么条件来判断是否是猪年? + +### 解题方案 + +1. 使用for循环逐年判断,根据2019是猪年这个条件,使用if来判断其他是猪年的年份。 + +### 操作步骤 + +1. 定义for循环,1949到2019的年份是循环次数。 +2. 对每个年份逐个判断,如果年份和2019的差值是12的倍数,说明这年是猪年 +3. 打印符合条件的年份 + +```java +public class task2 { + public static void main(String[] args) { + for(int i = 1949; i <=2019;i++){ + if(i % 12 == 3){ + System.out.println(i+"这年是猪年"); + } + } + } +} +``` + + + + + +## 题目4(训练) + +有一个输出语句System.out.print("@")。使用这个语句,在控制台打印出一个五行的三角形,效果如下: +​ @ +​ @@ +​ @@@ +​ @@@@ +​ @@@@@ + +### 训练提示 + +1. 已知条件中只有一个@,如何产生多行的符号? +2. 每行的打印个数不同,循环的次数如何控制? + +### 解题方案 + +1. 使用for循环的嵌套完成。 + +### 操作步骤 + +1. 定义循环执行5次代表一共5行 +2. 定义内层循环执行i次代表每行打印的个数是i +3. 在内层循环中输出符号 +4. 每行结束之后执行换行操作 + +```java +public class task3 { + public static void main(String[] args) { + for (int i = 1; i <= 5; i++) { + for (int j = 1; j <= i; j++) { + System.out.print("@"); + } + System.out.println(); + } + } +} +``` + +## 猜数字 + +```java +import java.util.Random; +import java.util.Scanner; + +public class howe { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int count = 1; + Random any = new Random(); + int num2 = any.nextInt(50) + 1; + for(;;){ + System.out.println("请输入数字"); + int num = sc.nextInt(); + count++; + if (num > num2) { + System.out.println("猜大了"); + } else if (num < num2) { + System.out.println("猜小了"); + } else { + System.out.println("猜对了"); + break; + } + if (count>3){ + System.out.println("现在你有两个选项,一是重新开始:re二是结束游戏:bye"); + String num1 = sc.next(); + switch (num1){ + case "re": + count=0; + count++; + break; + case "bye": + System.out.println("感谢您的使用"); + break; + default: + System.out.println("输入错误"); + break; + } + } + } + } +} +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# if + +```java +//格式3: +if (条件表达式1) { + //语句体1; +} else if (条件表达式2) { + //语句体2; +} else if (条件表达式3) { + //语句体3; +} +. . . +else { + //语句体n+1; +} + +``` + +# switch + +```java +switch(表达式){ + case 值1: + 执行代码...; + break; + case 值2: + 执行代码...; + break; + … + case 值n-1: + 执行代码...; + break; + default: + 执行代码n; +} + +``` + +ps: + +###### ①表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。 + +###### ②case给出的值不允许重复,且只能是字面量,不能是变量。 + +###### ③不要忘记写break,否则会出现穿透现象。(**存在多个**case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。) + +**if***其实在功能上远远强大于switch。 + +**if***适合做区间匹配。 + +**switch***适合做:值匹配的分支选择、代码优雅 + +# **for** **循环** + +```java +/*格式: +for (初始化语句; 循环条件; 迭代语句) { + 循环体语句(重复执行的代码); +} +*/ +for (int i = 0; i < 3; i++) { + System.out.println("Hello World"); +} + +``` + +# while 循环 + +```java +/*初始化语句; +while (循环条件) { + 循环体语句(被重复执行的代码); + 迭代语句; +} +*/ + +int i = 0; +while (i < 3) { + System.out.println("Hello World"); + i++; +} + +``` + +# do-while循环 + +```java +/*初始化语句; +do { + 循环体语句; + 迭代语句; +} while (循环条件); +*/ +int i = 0; +do { + System.out.println(“Hello World!"); + i++; + } while( i < 3); + +``` + +# 死循环 + +```java +for(;;) { + System.out.println("Hello World"); +} +// 经典做法 +while(true) { + System.out.println("Hello World"); +} + +do { + System.out.println("Hello World"); +} while (true); + +``` + + + + + + + + + -- Gitee From 2c8edfcf53e54e9e63d0fbe5600372280011911e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Mon, 3 Apr 2023 00:45:39 +0800 Subject: [PATCH 4/4] task --- ...2\347\241\200\345\244\215\344\271\2403.md" | 36 ++----------------- 1 file changed, 2 insertions(+), 34 deletions(-) diff --git "a/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" "b/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" index 06d0b34..d2c50e2 100644 --- "a/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" +++ "b/31 \346\235\216\346\254\243/20230402 java\345\237\272\347\241\200\345\244\215\344\271\2403.md" @@ -221,38 +221,6 @@ public class howe { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # if ```java @@ -291,9 +259,9 @@ switch(表达式){ ``` -ps: +p s: -###### ①表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。 +###### ①表达式类型只能是byte、short、int、char,J D K 5开始支持枚举,J D K 7开始支持String、不支持double、float、long。 ###### ②case给出的值不允许重复,且只能是字面量,不能是变量。 -- Gitee