From f20db8ca2a7948ef5e0e51e9a90be403d1e7795a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Fri, 25 Nov 2022 22:27:56 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...345\222\214\344\275\277\347\224\250git.md" | 24 ++++++++++++ ...70\347\224\250\350\257\255\346\263\225.md" | 37 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221124 12 \350\213\217\344\273\244\351\271\217 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250git.md" create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221125_12 \350\213\217\344\273\244\351\271\217 JAVA\345\274\200\345\217\221\345\267\245\345\205\267\344\273\245\345\217\212\345\270\270\347\224\250\350\257\255\346\263\225.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221124 12 \350\213\217\344\273\244\351\271\217 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250git.md" "b/12 \350\213\217\344\273\244\351\271\217/20221124 12 \350\213\217\344\273\244\351\271\217 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250git.md" new file mode 100644 index 0000000..86d1297 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221124 12 \350\213\217\344\273\244\351\271\217 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250git.md" @@ -0,0 +1,24 @@ +## JAVA的安装 + +1.下载jdk:(https://www.oracle.com/java/technologies/downloads/) + +2.安装jdk + +注意:文件夹名称不包含空格、中文 + +3.需要配置环境变量 + + + + + +## 作业 + +```java +public-class HelloWorld{ + public stat void main(string[] args){ + System.out.println("Hi MXDX") + } +} +``` + diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221125_12 \350\213\217\344\273\244\351\271\217 JAVA\345\274\200\345\217\221\345\267\245\345\205\267\344\273\245\345\217\212\345\270\270\347\224\250\350\257\255\346\263\225.md" "b/12 \350\213\217\344\273\244\351\271\217/20221125_12 \350\213\217\344\273\244\351\271\217 JAVA\345\274\200\345\217\221\345\267\245\345\205\267\344\273\245\345\217\212\345\270\270\347\224\250\350\257\255\346\263\225.md" new file mode 100644 index 0000000..33f9585 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221125_12 \350\213\217\344\273\244\351\271\217 JAVA\345\274\200\345\217\221\345\267\245\345\205\267\344\273\245\345\217\212\345\270\270\347\224\250\350\257\255\346\263\225.md" @@ -0,0 +1,37 @@ +## JAVA + +开发工具:IDEA + +安装建议修改路径为D:\develop + +## 字面量 + +字符串:用双引号括起来的内容 + +字符:用单引号括起来的内容 + +布尔:只有两个值:ture、false + +## 数据类型 + +基本数据类型:整数,非数值 + +引用数据类型:类,字符串,接口,数组 + +## 变量 + +#### 什么是变量 + +变量是内存中的存储空间,空间中的存储的数据是可以改变的。 + +格式:数据类型 变量名 = 变量值; + +范例 int price = 990 ; + +根据变量名进行使用,可以输出,也可以修改值。 + +## 作业 + +![image-20221125201014308](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221125201014308.png) + +![image-20221125201037675](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221125201037675.png) \ No newline at end of file -- Gitee From 3eca9ef89e460e718cf1751dba1c9ebd153497c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Wed, 30 Nov 2022 12:28:09 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\347\232\204\350\277\220\347\224\250.md" | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221129_12 \350\213\217\344\273\244\351\271\217 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213\344\270\216\350\277\220\347\256\227\347\254\246\347\232\204\350\277\220\347\224\250.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221129_12 \350\213\217\344\273\244\351\271\217 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213\344\270\216\350\277\220\347\256\227\347\254\246\347\232\204\350\277\220\347\224\250.md" "b/12 \350\213\217\344\273\244\351\271\217/20221129_12 \350\213\217\344\273\244\351\271\217 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213\344\270\216\350\277\220\347\256\227\347\254\246\347\232\204\350\277\220\347\224\250.md" new file mode 100644 index 0000000..3833f81 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221129_12 \350\213\217\344\273\244\351\271\217 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213\344\270\216\350\277\220\347\256\227\347\254\246\347\232\204\350\277\220\347\224\250.md" @@ -0,0 +1,89 @@ +## 数据类型 + +#### 基本数据类型 + +​ 数值型 + +​ 整数 byte short int long + +​ 小数(浮点数) float double + +​ 字符 cher 对应的是十进制的数 'a'+1 + +​ 非数值型:布尔型 : true false + +#### 表示数据范围从大到小 + +​ byte——>short——int——long——float——double + +​ (char) + +​ 整数默认是int类型,bytle,short和char类型数据在参与运算时会自动提升为int。 + +​ + +```java +byte a=1; + +byte b=2; + +byte c = a+b;//(x) a和b在参与运算时,会自动提升为int + +int c = a+b;//(√) + +byte c = 1+2; //=3 + +//"1+2"为常量,会优先求出结果,再判断是否在类型范围中。 +double num =5.5; +int num2 = (int)num;//强制转换,结果可能会丢失部分的值 + //= 5 +``` + +## 运算符 + +例 int a = 10; + +​ int b = 20; + +​ int c = a+b; + +"+"是运算符,并且是算术运算符 + +"a+b"是表达式,由于"+"是算数运算符,所以这个式子叫算数表达式。 + +"a"和"b"是操作数 + +```java +int a = 10; +int b = 3; +System.out.println(a/b);//"/"做除法,取商 +System.out.println(a%b);//"%"做除法,取余数 +``` + +## 作业 + +```java +public class a1129 { + public static void main(String[] args) { +// 第一题 + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个四位数"); + int shu = sc.nextInt(); + int qian = shu/1000; + int bai = shu/100%10; + int shi = shu/10%10; + int ge = shu%10; + System.out.println("千位:"+qian+"百位:"+bai+"十位:"+shi+"个位:"+ge); +// 第二题 + System.out.println("请输入华氏度"); + double hsd =sc.nextDouble(); + double hs =(hsd-32)*5/9; + System.out.println("转换为摄氏度为:"+hs); + System.out.println("请输入摄氏度"); + double ssd = sc.nextDouble(); + double ss = ssd*9/5+32; + System.out.println("转换为华氏度为:"+ss); + } +} +``` + -- Gitee From ccb54bffdb8e2fdcb50b1fc3ddf5abb4df4d9e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Thu, 1 Dec 2022 23:48:01 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\222\214if\344\273\243\347\240\201.md" | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221201_12 \350\213\217\344\273\244\351\271\217 JAVA\351\200\273\350\276\221\350\277\220\347\256\227\347\254\246\345\222\214if\344\273\243\347\240\201.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221201_12 \350\213\217\344\273\244\351\271\217 JAVA\351\200\273\350\276\221\350\277\220\347\256\227\347\254\246\345\222\214if\344\273\243\347\240\201.md" "b/12 \350\213\217\344\273\244\351\271\217/20221201_12 \350\213\217\344\273\244\351\271\217 JAVA\351\200\273\350\276\221\350\277\220\347\256\227\347\254\246\345\222\214if\344\273\243\347\240\201.md" new file mode 100644 index 0000000..1bcc447 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221201_12 \350\213\217\344\273\244\351\271\217 JAVA\351\200\273\350\276\221\350\277\220\347\256\227\347\254\246\345\222\214if\344\273\243\347\240\201.md" @@ -0,0 +1,166 @@ +## 自增自减运算符 + +++ 自增 变量值加1 + +-- 自减 变量值减1 + +++和--可以放在变量的后边也可以放在变量的前边,单独使用时无论放在前边还是后边结果都是一样的。 + +参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。 + +参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。 + +常见使用方式:单独使用 + +```java +int i = 10; +i++;//单独使用 +System.out.println("i:"+i)//i:11 +``` + +## 赋值运算符 + += 赋值 a=1,将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 + +## 关系运算符 + +| == | a==b,判断a和b的值是否相等,成立为true,不成立为false | +| ---- | ------------------------------------------------------- | +| != | a!=b,判断a和b的值是否不相等,成立为true,不成立为false | +| > | a>b,判断a是否大于b,成立为true,不成立为false | +| >= | a>=,判断a是否大于等于b,成立为true,不成立为false | +| < | a two ? one : two; + int max = temp > there ? temp : there; + System.out.println("最大值为:"+max); + } +} +``` + + + +```java +import java.util.Scanner; + +public class b1201 { + public static void main(String[] args) { + //第四题 + Scanner sc = new Scanner(System.in); + System.out.println("请输入任意两个数"); + int a = sc.nextInt(); + int b = sc.nextInt(); + System.out.println((a+b)%3==0 || a==3 || b==3); + } +} +``` + +```java +import java.util.Scanner; + +public class c1201 { + public static void main(String[] args) { + //第五题 + Scanner sc = new Scanner(System.in); + System.out.println("请输入父亲身高"); + double f = sc.nextDouble(); + System.out.println("请输入母亲身高"); + double m = sc.nextDouble(); + System.out.println("儿子身高:"+(f+m)*1.08/2); + System.out.println("女儿身高:"+(f*0.923+m)/2); + } +} +``` + +```java +public class d1201 { + public static void main(String[] args) { + //第六题 + int l = 21; + int h = 24; + l = (l*=2)+3; + h*=2; + System.out.println(l > h ? "绿茶妹妹钱多" : "红茶妹妹钱多"); + } +} + +``` + +```java +import java.util.Scanner; + +public class e1201 { + public static void main(String[] args) { + //第七题 + Scanner sc = new Scanner(System.in); + System.out.println("鱼香肉丝原价"); + int yxrs = sc.nextInt(); + System.out.println("油炸花生米价格"); + int hsm = sc.nextInt(); + System.out.println("米饭价格"); + int mf = sc.nextInt(); + int one = (int) ((yxrs + hsm + mf )*0.8); + System.out.println("打八折后小明花费:"+one); + int yh = (yxrs-=8); + System.out.println("鱼香肉丝优惠价:"+yh); + int two = yxrs+hsm+mf; + System.out.println("优惠价小明花费:"+two); + int a = one>two?two:one; + System.out.println("小明最少花费:"+a); + } +} + +``` + -- Gitee From 35e343008eb268ff4a6cc5af3551d652a7cdd303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Mon, 5 Dec 2022 13:00:19 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...52\347\216\257\350\257\255\345\217\245.md" | 337 ++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221202_12 \350\213\217\344\273\244\351\271\217 if\345\222\214switch\345\276\252\347\216\257\350\257\255\345\217\245.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221202_12 \350\213\217\344\273\244\351\271\217 if\345\222\214switch\345\276\252\347\216\257\350\257\255\345\217\245.md" "b/12 \350\213\217\344\273\244\351\271\217/20221202_12 \350\213\217\344\273\244\351\271\217 if\345\222\214switch\345\276\252\347\216\257\350\257\255\345\217\245.md" new file mode 100644 index 0000000..531a2c3 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221202_12 \350\213\217\344\273\244\351\271\217 if\345\222\214switch\345\276\252\347\216\257\350\257\255\345\217\245.md" @@ -0,0 +1,337 @@ +## if语句格式 + +### 格式1: + +``` +if (关系表达式) { + 语句体; +} +``` + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体 + +③如果关系表达式的值为false就不执行语句体 + +④继续执行后面的语句内容 + +示例: + +```java +public class IfDemo { + public static void main(String[] args) { + System.out.println("开始"); + + // 如果年龄大于18岁, 就可以上网吧 + int age = 17; + + if(age >= 18){ + // int a = 10; + System.out.println("可以上网吧"); + } + + System.out.println("结束"); + } +} +``` + +### 格式2: + +``` +格式: +if (关系表达式) { + 语句体1; +} else { + 语句体2; +} +``` + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体1 + +③如果关系表达式的值为false就执行语句体2 + +④继续执行后面的语句内容 + +示例:奇偶数 + +​ 任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 + +```java +public class Demo2If { + public static void main(String[] args) { + // 程序判断一个数, 是奇数还是偶数 + int num = 9; + + if(num % 2 == 0){ + System.out.println("偶数"); + }else{ + System.out.println("奇数"); + } + } +} +``` + +### 格式3(理解) + +``` +格式: +if (关系表达式1) { + 语句体1; +} else if (关系表达式2) { + 语句体2; +} +… +else { + 语句体n+1; +} +``` + +执行流程: + +①首先计算关系表达式1的值 + +②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值 + +③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值 + +④… + +⑤如果没有任何关系表达式为true,就执行语句体n+1。 + +示例: + +​ 定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格,0~59请努力加油 + +```java +public class Demo3If { + public static void main(String[] args){ + int score = 65; + if(score >= 90 && score <= 100){ + System.out.println("优秀"); + }else if (score >= 80 && score <= 89){ + System.out.println("良好"); + }else if (score >= 70 && score <= 79){ + System.out.println("中等"); + }else if (score >= 60 && score <= 69){ + System.out.println("及格"); + }else if (score >= 0 && score <= 59){ + System.out.println("请努力加油"); + }else{ + System.out.println("成绩有误!"); + } + } +} +``` + +## switch语句 + +### 分支语句switch语句 + +格式: + +```java +switch (表达式) { + case 1: + 语句体1; + break; + case 2: + 语句体2; + break; + ... + default: + 语句体n+1; + break; +} + +``` + +执行流程: + +1、首先计算出表达式的值 + +2、其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break就会结 束。 + +3、最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。 + +### switch语句case穿透 + +概述 : 如果switch语句中,case省略了break语句, 就会开始case穿透 + +需求 : 键盘录入星期数,输出工作日、休息日 (1-5)工作日,(6-7)休息日 + +示例代码: + +```java +public static void main(String[] args){ + Scanner sc = new Scanner(System.in); + System.out.println("请输入星期数:"); + int week = sc.nextInt(); + switch(week){ + case 1: + case 2: + case 3: + case 4: + case 5: + System.out.println("工作日"); + break; + case 6: + case 7: + System.out.println("休息日"); + break; + default: + System.out.println("您的输入有误"); + break; + } + } +} +``` + +### for循环 + +#### 循环 + +循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环 体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循 环,否则循环将一直执行下去,形 成死循环。 + +#### 格式 + +```java +for (初始化语句;条件判断语句;条件控制语句) { + 循环体语句; +} + +``` + +#### 格式解释 + +初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样 + +条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去 + +循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情 + +条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去 + +#### 执行流程 + +①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + +⑤回到②继续 + +#### 案例 + +输出数据1-5和5-1 + +需求:在控制台输出1-5和5-1的数据 + +示例代码: + +```java +public class ForTest01 { + public static void main(String[] args) { + //需求:输出数据1-5 + for(int i=1; i<=5; i++) { + System.out.println(i); + } + System.out.println("--------"); + //需求:输出数据5-1 + for(int i=5; i>=1; i--) { + System.out.println(i); + } + } +} +``` + +求1-5数据和 + +需求:求1-5之间的数据和,并把求和结果在控制台输出 + +示例代码: + +```java +public class ForTest02 { + public static void main(String[] args) { + //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 + int sum = 0; + //从1开始到5结束的数据,使用循环结构完成 + for(int i=1; i<=5; i++) { + //将反复进行的事情写入循环结构内部 + // 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中 + sum += i; + /* + sum += i; sum = sum + i; + 第一次:sum = sum + i = 0 + 1 = 1; + 第二次:sum = sum + i = 1 + 2 = 3; + 第三次:sum = sum + i = 3 + 3 = 6; + 第四次:sum = sum + i = 6 + 4 = 10; + 第五次:sum = sum + i = 10 + 5 = 15; + */ + } + //当循环执行完毕时,将最终数据打印出来 + System.out.println("1-5之间的数据和是:" + sum); + } +} +``` + +本题要点: + +​ 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量 + +​ 求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的 + +### 作业 + +```java +public class a1202 { + public static void main(String[] args) { + double money = 0; + Scanner sc = new Scanner(System.in); + System.out.println("选择您要乘坐的出租车:"); + String car = sc.next(); + System.out.println("您要去往的目的地距离:"); + double jl = sc.nextDouble(); + switch (car){ + case"夏利": + if (jl > 3){ + money = (jl - 3)*2.1+3; + }else { + money = 3; + } + break; + case "富康": + if (jl > 3){ + money = (jl - 3)*2.4+4; + }else { + money = 4; + } + break; + case "桑塔纳": + if (jl > 3){ + money = (jl - 3)*2.7+5; + }else { + money = 5; + } + break; + } + System.out.println("你所乘坐的是:" + car + " 你所行驶的公里数:" + jl + " 你需要支付的费用:" + money ); + } + } + +``` + -- Gitee From 7758ed15446d95e7e9dc6abb31bbaa0f21a01ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Wed, 7 Dec 2022 19:13:35 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\222\214while\345\276\252\347\216\257.md" | 242 ++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221206_12 \350\213\217\344\273\244\351\271\217 for\345\276\252\347\216\257\345\222\214while\345\276\252\347\216\257.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221206_12 \350\213\217\344\273\244\351\271\217 for\345\276\252\347\216\257\345\222\214while\345\276\252\347\216\257.md" "b/12 \350\213\217\344\273\244\351\271\217/20221206_12 \350\213\217\344\273\244\351\271\217 for\345\276\252\347\216\257\345\222\214while\345\276\252\347\216\257.md" new file mode 100644 index 0000000..1ae66f3 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221206_12 \350\213\217\344\273\244\351\271\217 for\345\276\252\347\216\257\345\222\214while\345\276\252\347\216\257.md" @@ -0,0 +1,242 @@ +## for循环 + +#### for循环格式: + +```java +for (初始化语句;条件判断语句;条件控制语句) { +循环体语句; +} +``` + +#### 执行流程: + + ①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + + ⑤回到②继续 + +#### for循环案例 + +需求:在控制台输出1-5和5-1的数据 + +```java +public class ForTest01 { + public static void main(String[] args) { + //需求:输出数据1-5 + for(int i=1; i<=5; i++) { + System.out.println(i); + } + System.out.println("--------"); + //需求:输出数据5-1 + for(int i=5; i>=1; i--) { + System.out.println(i); + } + } +} +``` + +需求:求1-5之间的数据和,并把求和结果在控制台输出 + +```java +public class ForTest02 { + public static void main(String[] args) { + //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 + int sum = 0; + //从1开始到5结束的数据,使用循环结构完成 + for(int i=1; i<=5; i++) { + //将反复进行的事情写入循环结构内部 + // 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中 + sum += i; + /* + sum += i; sum = sum + i; + 第一次:sum = sum + i = 0 + 1 = 1; + 第二次:sum = sum + i = 1 + 2 = 3; + 第三次:sum = sum + i = 3 + 3 = 6; + 第四次:sum = sum + i = 6 + 4 = 10; + 第五次:sum = sum + i = 10 + 5 = 15; + */ + } + //当循环执行完毕时,将最终数据打印出来 + System.out.println("1-5之间的数据和是:" + sum); + } +} + +``` + +## while循环 + +#### while循环完整格式: + +```java +初始化语句; +while (条件判断语句) { + 循环体语句; + 条件控制语句; +} +``` + +#### while循环执行流程: + +①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + +⑤回到②继续 + +#### 示例 + +```java +public class WhileDemo { + public static void main(String[] args) { + //需求:在控制台输出5次"HelloWorld" + //for循环实现 + for(int i=1; i<=5; i++) { + System.out.println("HelloWorld"); + } + System.out.println("--------"); + //while循环实现 + int j = 1; + while(j<=5) { + System.out.println("HelloWorld"); + j++; + } + } +} + +``` + +## 循环细节 + +#### 循环语句-dowhile循环 + +```java +初始化语句; +do { + 循环体语句; + 条件控制语句; +}while(条件判断语句); +``` + +#### 执行流程: + +① 执行初始化语句 + +② 执行循环体语句 + +③ 执行条件控制语句 + +④ 执行条件判断语句,看其结果是true还是false + +如果是false,循环结束 + +如果是true,继续执行 + +⑤ 回到②继续 + +#### 示例代码: + +```java +public class DoWhileDemo { + public static void main(String[] args) { + //需求:在控制台输出5次"HelloWorld" + //for循环实现 + for(int i=1; i<=5; i++) { + System.out.println("HelloWorld"); + } + System.out.println("--------"); + //do...while循环实现 + int j = 1; + do { + System.out.println("HelloWorld"); + j++; + }while(j<=5); + } +} +``` + +#### 三种循环的区别 + +三种循环的区别 + +1.for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) + +2.do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后 判断) + +for循环和while的区别 + +1.条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能 再次被访问到了 + +2.条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束 后,该变量还可以继续使用 + +死循环(无限循环)的三种格式 + +1. for(;;){} + +2. while(true){} +3. do {} while(true); + +#### 死循环 + +```java +for死循环格式 : +for(;;){ + +} + +while死循环格式 : + +while(true){ + +} +do..while死循环格式 : + +do{ + +}while(true); +``` + +#### 死循环案例 + +```java +/* + 问题: 死循环有应用场景吗? + 例如: 键盘录入一个1-100之间的整数 + + 顾虑: 键盘录入是用户操作的, 用户就可能会出现一些误操作的现象 +*/ +public static void main(String[] args) { + /* + for(;;){ + System.out.println("我停不下来了~"); + } + */ + /* + while(true){ + System.out.println("我停不下来了~"); + } + */ + do{ + System.out.println("我停不下来了~"); + }while(true); + System.out.println("看看我能被执行吗?~"); // 无法访问的语句 +} +} +``` + -- Gitee From d84b6965bce434effd96507d3bb7bf4bd0b80e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=BB=A4=E9=B9=8F?= <1963831974@qq.com> Date: Thu, 8 Dec 2022 21:31:45 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\351\271\217 \346\225\260\347\273\204.md" | 602 ++++++++++++++++++ 1 file changed, 602 insertions(+) create mode 100644 "12 \350\213\217\344\273\244\351\271\217/20221208_12 \350\213\217\344\273\244\351\271\217 \346\225\260\347\273\204.md" diff --git "a/12 \350\213\217\344\273\244\351\271\217/20221208_12 \350\213\217\344\273\244\351\271\217 \346\225\260\347\273\204.md" "b/12 \350\213\217\344\273\244\351\271\217/20221208_12 \350\213\217\344\273\244\351\271\217 \346\225\260\347\273\204.md" new file mode 100644 index 0000000..eab2e46 --- /dev/null +++ "b/12 \350\213\217\344\273\244\351\271\217/20221208_12 \350\213\217\344\273\244\351\271\217 \346\225\260\347\273\204.md" @@ -0,0 +1,602 @@ +## 1.数组 + +### 1.1 数组介绍 + +​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 + +### 1.2 数组的定义格式 + +#### 1.2.1 第一种格式 + +​ 数据类型[] 数组名 + +​ 示例: + +```java +int[] arr; +double[] arr; +char[] arr; +``` + +#### 1.2.2 第二种格式 + +​ 数据类型 数组名[] + +​ 示例: + +```java +int arr[]; +double arr[]; +char arr[]; +``` + +### 1.3 数组的动态初始化 + +#### 1.3.1 什么是动态初始化 + +​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 + +#### 1.3.2 动态初始化格式 + +```java +数据类型[] 数组名 = new 数据类型[数组长度]; +``` + +```java +int[] arr = new int[3]; +``` + +#### 1.3.3 动态初始化格式详解 + +- 等号左边: + + - int:数组的数据类型 + + - []:代表这是一个数组 + + - arr:代表数组的名称 + +- 等号右边: + + - new:为数组开辟内存空间 + - int:数组的数据类型 + - []:代表这是一个数组 + - 5:代表数组的长度 + +**代码 :** + +```java +package com.itheima.array; + +public class Demo2Array { + /* + 数组的动态初始化: + 在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值. + + 动态初始化格式: + 数据类型[] 数组名 = new 数据类型[数组的长度]; + + 注意: + 打印数组变量的时候, 会打印出数组的内存地址 + + [I@10f87f48 : + + @ : 分隔符 + [ : 当前的空间是一个数组类型 + I : 当前数组容器中所存储的数据类型 + 10f87f48 : 十六进制内存地址 + + 0 1 2 3 4 5 6 7 8 9 a b c d e f + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[数组的长度]; + // 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录 + int[] arr = new int[5]; + // [I@10f87f48 + System.out.println(arr); + + byte[] bArr = new byte[3]; + // [B@b4c966a + System.out.println(bArr); + + } +} + +``` + + + +### 1.4 数组元素访问 + +#### 1.4.1 什么是索引 + +​ 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 + +​ 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。 + +#### 1.4.2访问数组元素格式 + +```java +数组名[索引]; +``` + +#### 1.4.3示例代码 + +```java +package com.itheima.array; + +public class Demo3ArrayIndex { + /* + 数组动态初始化: + 初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值. + + 数组的元素访问格式: + 数组名[索引] + + 索引: 数组中数据的编号方式, 编号从0开始 + 作用: 访问数组容器中的空间位置 + + 注意: + 数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值. + + */ + public static void main(String[] args) { + int[] arr = new int[3]; // 0 1 2 + System.out.println(arr); // 数组的内存地址 [I@10f87f48 + + // 数组名[索引] 访问数组容器中的空间位置 + System.out.println(arr[0]); // 0 系统自动分配的默认初始化值 + System.out.println(arr[1]); + System.out.println(arr[2]); + + System.out.println("--------------"); + + // 数组名[索引] + arr[0] = 11; + arr[1] = 22; + arr[2] = 33; + + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + } +} +``` + +### 1.5 内存分配 + +#### 1.5.1 内存概述 + +​ 内存是计算机中的重要原件,临时存储区域,作用是运行程序。 + +​ 我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。 + +​ 必须放进内存中才能运行,运行完毕后会清空内存。 + +​ Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。 + +#### 1.5.2 java中的内存分配 + +- 目前我们只需要记住两个内存,分别是:栈内存和堆内存 + +| 区域名称 | 作用 | +| ---------- | ---------------------------------------------------------- | +| 寄存器 | 给CPU使用,和我们开发无关。 | +| 本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 | +| 方法区 | 存储可以运行的class文件。 | +| 堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 | +| 方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 | + +### 1.6 Java内存分配-一个数组内存图 + +![1591007817165](.\4img\1591007817165.png) + +### 1.7 两个数组内存图 + +![1591007925899](.\4img\1591007925899.png) + +### 1.8 多个数组指向相同内存图 + +![1591007957052](.\4img\1591007957052.png) + +### 1.9 数组的静态初始化 + +#### 1.9.1 什么是静态初始化 + +​ 在创建数组时,直接将元素确定 + +#### 1.9.2 静态初始化格式 + +- 完整版格式 + + ```java + 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; + ``` + +- 简化版格式 + + ```java + 数据类型[] 数组名 = {元素1,元素2,...}; + ``` + +#### 1.9.3示例代码 + +```java +package com.itheima.array2; + +public class Demo1Array { + /* + 数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度 + + 完整格式: + 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + 简化格式: + 数据类型[] 数组名 = {数据1,数据2,数据3...}; + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + int[] arr = new int[]{11,22,33}; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + + // 数据类型[] 数组名 = {数据1,数据2,数据3...}; + int[] arr2 = {44,55,66}; + System.out.println(arr2); + System.out.println(arr2[0]); + System.out.println(arr2[1]); + System.out.println(arr2[2]); + + } +} +``` + +### 1.10 数组操作的两个常见问题 + +#### 1.10.1 索引越界异常 + +- 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + System.out.println(arr[3]); + } + } + ``` + + 数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。 + + 程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +- 解决方案 + + 将错误的索引修改为正确的索引范围即可! + +#### 1.10.2 空指针异常 + +- 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + + //把null赋值给数组 + arr = null; + System.out.println(arr[0]); + } + } + ``` + + arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +- 解决方案 + + 给数组一个真正的堆内存空间引用即可! + +### 1.11 数组遍历 + +- 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + int[] arr = { 1, 2, 3, 4, 5 }; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + System.out.println(arr[3]); + System.out.println(arr[4]); + } + } + ``` + + 以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + //定义数组 + int[] arr = {11, 22, 33, 44, 55}; + + //使用通用的遍历格式 + for(int x=0; x max){ + max = arr[i]; + } + } + // 4. 循环结束后, 打印最大值. + System.out.println("max:" + max); + } + } + + ``` + +### 1.13 数组元素求和 + +- 需求:键盘录入5个整数,存储到数组中,并对数组求和 + +- 思路: + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + +- 代码实现: + + ```java + package com.itheima.test; + + import java.util.Scanner; + + public class Test3Array { + /* + 需求:键盘录入5个整数,存储到数组中,并对数组求和 + + 思路: + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + */ + public static void main(String[] args) { + // 1.创建键盘录入对象,准备键盘录入 + Scanner sc = new Scanner(System.in); + // 2.定义一个求和变量,准备记录累加后的结果 + int sum = 0; + // 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + int[] arr = new int[5]; + // 4.将键盘录入的数值存储到数组中 + for(int i = 0; i < arr.length; i++){ + System.out.println("请输入第" + (i+1) + "个整数:"); + //arr[i] = 10; + arr[i] = sc.nextInt(); + } + + // 5.遍历数组,取出每一个元素,并求和 + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 6.输出总和 + System.out.println("sum:" + sum); + + } + } + + ``` + +### 1.14 数组基本查找【应用】 + +- 需求: + 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控 + 制台输出找到的索引值。 + +- 思路: + 1.定义一个数组,用静态初始化完成数组元素的初始化 + 2.键盘录入要查找的数据,用一个变量接收 + 3.定义一个索引变量,初始值为-1 + 4.遍历数组,获取到数组中的每一个元素 + 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + 6.输出索引变量 + +- 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用静态初始化完成数组元素的初始化 + int[] arr = {19, 28, 37, 46, 50}; + // 2.键盘录入要查找的数据,用一个变量接收 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您要查找的元素:"); + int num = sc.nextInt(); + // 3.定义一个索引变量,初始值为-1 + // 假设要查找的数据, 在数组中就是不存在的 + int index = -1; + // 4.遍历数组,获取到数组中的每一个元素 + for (int i = 0; i < arr.length; i++) { + // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + if(num == arr[i]){ + // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + index = i; + break; + } + } + // 6.输出索引变量 + System.out.println(index); + } + } + + ``` + +### 1.15 评委打分【应用】 + +- 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 + 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。 + +- 思路: + 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + 2.键盘录入评委分数 + 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + 4.求出数组最大值 + 5.求出数组最小值 + 6.求出数组总和 + 7.按照计算规则进行计算得到平均分 + 8.输出平均分 + +- 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + int[] arr = new int[6]; + // 2.键盘录入评委分数 + Scanner sc = new Scanner(System.in); + // 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + for (int i = 0; i < arr.length; i++) { + System.out.println("请输入第" + (i+1) + "个评委的打分:"); + int score = sc.nextInt(); + if(score >= 0 && score <= 100){ + // 合法的分值 + arr[i] = score; + }else{ + // 非法的分值 + System.out.println("您的打分输入有误, 请检查是否是0-100之间的"); + i--; + } + } + + // 4.求出数组最大值 + int max = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(max < arr[i]){ + max = arr[i]; + } + } + + // 5.求出数组最小值 + int min = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(min > arr[i]){ + min = arr[i]; + } + } + + // 6.求出数组总和 + int sum = 0; + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 7.按照计算规则进行计算得到平均分 + int avg = (sum - max - min ) / 4; + + // 8.输出平均分 + System.out.println(avg); + } + } + ``` + +## 作业 + +```java +public class a1208 { + public static void main(String[] args) { + Random r = new Random(); + Scanner sc = new Scanner(System.in); + int randomNum = r.nextInt(100)+1; + while (true){ + System.out.println("请输入您猜的数字"); + int num = sc.nextInt(); + if(num>randomNum){ + System.out.println("猜大了"); + }else if (nummax){ + max=arr[i]; + } + } + System.out.println("最大值为:"+max); + } +} +``` + -- Gitee