欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java笔记3

时间:2023-07-08

目录

一、循环控制语句

1.特殊关键字

①break:只能用于switch语句和循环语句中

②continue:只能用于循环语句中

③return:结束一个方法

2.练习

①输出一百以内素数

3.家庭收支记账

①介绍Utility工具类

②创建主体类程序

③完整代码 

二、idea的使用 

1.概念

2.编写

①创建类

三、数组

1、概念

2.创建数组

①声明数组变量

②.创建数组对象

③将数据存入数组

④从数组中读取数据

⑤遍历数组

⑥数组必须创建对象再访问元素

⑦数组中元素默认值

3.内存分析

4.练习

四、多维数组

1.概念

2.多维数组底层内存结构

3.语法层面 

①创建二维数组格式一:动态初始化——创建数组对象时就指定了两个维度的数组长度

②创建二维数组格式二:动态初始化——仅指定第一个维度的数组长度

③创建二维数组格式三:静态初始化——在创建对象时将数据填充

④创建二维数组格式四:声明变量时,两层[]没在一起,不建议使用

4.访问二维数组元素

5.遍历二维数组元素

6.练习


一、循环控制语句

for、while、do…while均可以作为外循环

1.特殊关键字

①break:只能用于switch语句和循环语句中

结束本层循环

例:

public class Break{ public static void main(String[] args){ for(int k = 0;k <=9;k ++){ for(int i = 0;i <= 9;i ++){ if(i == 6){ break; } System.out.print("k=" + k + "i=" + i); } System.out.println("k=" + k); } }}

结束for(int i = 0;i<=9;i ++)的循环,for(int k = 0;k <=9;k ++)正常进行

通过标号来结束外层循环(不推荐使用,可读性差)

public class Break{ public static void main(String[] args){ a:for(int k = 0;k <=9;k ++){ b:for(int i = 0;i <= 9;i ++){ if(i == 6){ break; } if(k == 6){ break a; } System.out.print("k=" + k + "i=" + i); } System.out.println("k=" + k); } }}

②continue:只能用于循环语句中

提前结束本次循环,进入下一次循环

public class Continue{ public static void main(String[] args){ for(int i = 0;i <= 9;i ++){System.out.println(i);System.out.println("**");if(i == 6){//提前结束本次循环,进入下一次循环continue;}System.out.println("***");} }}

通过标号来结束外层循环(不推荐使用,可读性差)

public class Continue{ public static void main(String[] args){ a:for(int i = 0;i <= 9;i ++){b:for(int j = 0;j <= 9;j ++){if(i == 6){continue a;}System.out.println(i + "," + j);}} }}

③return:结束一个方法

直接结束整个方法,不论return处于多少层循环之中

本质上不是控制循环的语句,,是用来结束一个函数(方法)的,当函数结束时,循环也随之结束

2.练习

①输出一百以内素数

public class SuShu{public static void main(String[] args){//外层循环,列出2~100所有数字for(int i = 2;i <= 100;i ++){//声明一个变量,用来保存当前数字是否为素数//默认为trueboolean primeFlag = true;//内层循环验证i变量中保存的这个数是不是素数//验证方式:对i从【2到i/2】的所有数取模//如果能够整除,那么这个数不是素数for(int j = 2;j <= i/2;j ++){if(i % j == 0){//i能被整除,不是素数。将PrimeFlag设为falseprimeFlag = false;//i只要能被任何一个j整除,则i就不是素数,所以后边就不用再试break;}}if(primeFlag){System.out.println("i=" + i);}}}}

3.家庭收支记账

①介绍Utility工具类

这个类使用时,和主体程序目录放在一起即可

调用方式方法作用Utility.readMenuSelection()读取菜单序号:1、2、3、4Untility.readNumber()读取金额数值Utility.readString()读取文字Utility.readConfirmSelection()读取确认是否退出Y/NUtility.readKeyBoard(int limit)从键盘读取limit个字符

Utility工具类和FamilyAccount类要放在一起

②创建主体类程序

public class FamilyAccount{public static void main(String[] args){}}

③完整代码 

public class FamilyAccount{public static void main(String[] args){//初始化:用户记账金额初始值设为10000元int balance = 10000;//初始化:显示收支明细时使用表头信息String table = "收支t账户金额t收支金额t说 明n";//使操作循换//使用Ctrl+c强制结束进程while(true){//界面:标题System.out.println("------------家庭收支记账软件------------");//界面:菜单选项System.out.println("1 收支明细");System.out.println("2 登记收入");System.out.println("3 登记支出");System.out.println("4 退t出");//界面:提示用户输入菜单项的序号System.out.print("请输入菜单项的序号(1-4):");//读取:用户输入的菜单项序号char menuSelection = Utility.readMenuSelection();System.out.println(menuSelection);//分支结构:根据用户输入的数字,执行对应操作switch(menuSelection){case '1':System.out.println(table);break;case '2'://界面:提示用户输入收入金额System.out.println("请输入收入金额:");int income = Utility.readNumber();//界面:提示用户输入收入说明System.out.println("请输入收入说明");String incomeDescription = Utility.readString();//系统内部运算:将收入金额累加到总余额中balance = balance + income;//系统内部运算:将新的收入明细信息附加到表格中table = table + "收入t" + balance + "tt" + income + "tt" + incomeDescription + "n";//提示已保存System.out.println(incomeDescription + "已保存收入登记信息");break;case '3'://界面:提示用户输入支出金额System.out.println("请输入支出金额:");int outcome = Utility.readNumber();//界面:提示用户输入支出说明System.out.println("请输入支出说明");String outcomeDescription = Utility.readString();//系统内部运算:将收入金额累减到总余额中balance = balance - outcome;//系统内部运算:将新的支出明细信息附加到表格中table = table + "支出t" + balance + "tt" + outcome + "tt" + outcomeDescription + "n";//提示已保存System.out.println(outcomeDescription + "已保存收入登记信息");break;case '4':System.out.print("确认是否退出Y|N:");char confirmWord = Utility.readConfirmSelection();if(confirmWord == 'Y'){return;}break;}}}}

二、idea的使用 

1.概念

project:工程

module:模块

模块包含在工程中

2.编写

创建工程→创建module→创建类

①创建类

最好把类都放在包中

取名格式:

        公司或组织域名的倒序.项目名称.模块名称.具体包名.类名

        com.atguigu.mall.product.service.ProductService

                例:com.atguigu.iavase.idea.HotKeyTest

三、数组

1、概念

一组相同类型数据的容器

        相同类型:Java语言要求存入数组的数据类型必须一致

        容器:用来存放数据

        一组容器中可以存放多个数据

        长度一旦确定不能再修改

2.创建数组

①声明数组变量

int[] ageArray;String[] nameArray;double salaryArray [];

[]也可以放在变量名的后面,但是建议放在类型的后面

[]中不能指定数组长度

②.创建数组对象

①动态

ageArray = new int[5];

②静态

[]中不能规定长度

nameArray = new String[]{"foo","bar","biz"};

③将数据存入数组

ageArray[0] = 10;ageArray[1] = 11;ageArray[2] = 12;ageArray[3] = 13;ageArray[4] = 14;nameArray[0] = "aaa";nameArray[1] = "bbb";nameArray[2] = "ccc";

④从数组中读取数据

利用System.out.println();

⑤遍历数组

Array.length是数组的长度

for(int i = 0;i <= Array.length;i ++){ int age = ageArray[i]; System.out.println("age" = age);}

⑥数组必须创建对象再访问元素

⑦数组中元素默认值 数组元素类型元素初始默认值byteshort0int0long0Lfloat0.0Fdouble0.0char0或:'u0000'(表现为空)booleanfalse引用数据类型null

3.内存分析

①基本数据类型保存在栈内存中

int a = 10;

②引用数据保存在堆内存中,形式为地址

创建对象

Scanner scanner = new Scanner(System.in);

创建数组对象

int[] ageArray;ageArray = new int[5];

将数据写入数组

ageArray[0] = 8;

多声明一个数组变量

int[] otherArray = ageArray;

通过另一个变量访问数组元素

数组变量指向新数组对象

otherArray = new int[2];

给新数组元素赋值

otherArray[1] = 33;

4.练习

分析以下需求,并用代码实现:

(1)在编程竞赛中,有10位评委为参赛的选手打分,分数分别为:5,4,6,8,9,0,1,2,7,3

(2)求选手的最后得分(去掉一个最高分和一个最低分后其余8位评委打分的平均值)

int[] scoreArray = {5,4,6,8,9,0,1,2,7,3};​ // 声明两个变量,用于保存打分数据中的最大值和最小值 // maxScore和minScore的初始值应该是数组中的某一个元素 // 以minScore为例,如果初始值为0,原始数组中所有数值都比0大,则无法正确找到真正的最小值 int maxScore = scoreArray[0]; int minScore = scoreArray[0];​ // 遍历数组,获取每一个具体的分数 for (int i = 0; i < scoreArray.length; i++) {​ // 获取每一个数组元素 int score = scoreArray[i];​ // 拿当前遍历得到的元素和maxScore进行比较 if (score > maxScore) {​ // 如果当前元素大于maxScore,则将当前元素赋值给maxScore maxScore = score; }​ // 拿当前遍历得到的元素和minScore进行比较 if (score < minScore) {​ // 如果当前元素小于minScore,则将当前元素赋值给minScore minScore = score; } }​ System.out.println("minScore = " + minScore); System.out.println("maxScore = " + maxScore);​ // 声明变量用来保存累加的结果 int sum = 0;​ // 为了求平均值,需要再遍历一次 for (int i = 0; i < scoreArray.length; i++) {​ int score = scoreArray[i];​ sum = sum + score;​ }​ // 根据评分规则,最高分和最低分分别只去掉一个,所以在上面全部分数累加结果中把最高分和最低分减去即可 // 累加结果除以8得到平均值 double average = (sum - maxScore - minScore) / 8.0;​ System.out.println("average = " + average);

从键盘读入学生成绩,找出最高分,并输出学生成绩等级。 成绩>=最高分-10 等级为’A’
成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’
其余 等级为’D’ 

// 1.创建Scanner对象Scanner scanner = new Scanner(System.in);​// 2.读取用户输入的学生人数System.out.print("请输入学生人数:");int studentCount = scanner.nextInt();​// 3.根据用户输入的学生人数创建数组对象(以学生人数作为数组长度)int[] scoreArray = new int[studentCount];​// 4.将用户输入的学生成绩保存到数组中for (int i = 0; i < studentCount; i++) {​ // 5.读取用户输入 System.out.print("请输入第" + (i + 1) + "位学生成绩:"); int score = scanner.nextInt();​ // 6.将学生成绩存入数组下标对应的位置 scoreArray[i] = score;​}​// 二、查找已输入数据中的最大值// 1.声明一个变量用来存储最大值// 为什么最大值变量的初始值设置为scoreArray[0]?// 假设成绩是:-10,-20,-30// 假设maxScore是:0// 最大值是:0int maxScore = scoreArray[0];​// 2.遍历成绩数组for (int i = 0; i < scoreArray.length; i++) {​ // 3.获取当前成绩数据 int score = scoreArray[i];​ // 4.检查当前成绩是否大于maxScore if (score > maxScore) {​ // 5.如果当前成绩大于maxScore,就把maxScore设置为当前成绩 maxScore = score; }}​System.out.println("maxScore = " + maxScore);​// 三、按照等级打印学生成绩// 1.遍历学生成绩数组for (int i = 0; i < scoreArray.length; i++) {​ // 2.获取当前成绩数据 int score = scoreArray[i];​ // 3.逐级判断当前成绩数据属于哪个等级 if (score > maxScore - 10) {​ System.out.println("第" + (i+1) + "位学生的成绩" + score + "是A级");​ } else if (score > maxScore - 20) {​ System.out.println("第" + (i+1) + "位学生的成绩" + score + "是B级");​ } else if (score > maxScore - 30) {​ System.out.println("第" + (i+1) + "位学生的成绩" + score + "是C级");​ } else {​ System.out.println("第" + (i+1) + "位学生的成绩" + score + "是D级");​ }​}

四、多维数组 1.概念

一维数组:线

二维数组:面

三维数组:立体空间

2.多维数组底层内存结构

int[][] = new numberArr[3][2];numberArr[0] = new int[2];numberArr[0][0] = 5;

numberArr[0]指向另一个数组

3.语法层面 

①创建二维数组格式一:动态初始化——创建数组对象时就指定了两个维度的数组长度

int[][] arr2d01 = new int[3][2];arr2d01[0][0] = 100;arr2d01[0][1] = 101;arr2d01[1][0] = 102;arr2d01[1][1] = 103;arr2d01[2][0] = 104;arr2d01[2][1] = 105;

②创建二维数组格式二:动态初始化——仅指定第一个维度的数组长度

Java中多维数组不必都是规则矩阵形式

int[][] arr2d02 = new int[3][];​arr2d02[0] = new int[]{3, 5, 7};arr2d02[1] = new int[]{14, 21, 66, 89};arr2d02[2] = new int[]{90, 100};

③创建二维数组格式三:静态初始化——在创建对象时将数据填充

如果某个元素位置设置为null不会编译报错,但是访问这个位置时还是要先初始化

前面设置null的地方,需要初始化才可以访问:arr2d03[2] = new int[]{12,24};

int[][] arr2d03 = new int[][]{{1,2,3}, {4,5}, null, {6,7,8}};​arr2d03[2] = new int[]{12,24};arr2d03[2][0] = 5;

④创建二维数组格式四:声明变量时,两层[]没在一起,不建议使用

int[] x[] = new int[][]{{1,2,3}, {4,5}, {6,7,8}};

4.访问二维数组元素

int[][] arr2d05 = new int[2][2];​arr2d05[1][0] = 10;System.out.println("arr2d05[1][0] = " + arr2d05[1][0]);

5.遍历二维数组元素

int[][] arr2d06 = new int[][]{{0,1,2},{3,4,5},{6,7},{8}};for (int i = 0; i < arr2d06.length; i++) {​ int[] intArr = arr2d06[i];​ for (int j = 0; j < intArr.length; j++) { int intValue = intArr[j]; System.out.println("intValue[" + i +"][" + j + "] = " + intValue); }​}

6.练习

//1、创建二维数组int[][] yanghuiArr = new int[10][];// 2.通过双层for循环给二维数组填充数据for (int i = 0; i < yanghuiArr.length; i++) {​ // 3.创建一维数组,对yanghuiArr下标i位置进行初始化 yanghuiArr[i] = new int[ i + 1 ];​ // 4.遍历一维数组,填充数据 for (int j = 0; j <= i; j++) {​ // 5.一头(一维数组的下标0元素)一尾(一维数组的下标长度-1元素)固定就是1 // 一维数组中最后一个元素的下标正好就是现在外层循环变量:i if (j == 0 || j == i) {​ yanghuiArr[i][j] = 1;​ } else {​ // 6.非头尾的元素,由上一行中两个元素相加得到 // 第一个值的下标:[i-1][j-1] // 第二个值的下标:[i-1][j] yanghuiArr[i][j] = yanghuiArr[i-1][j-1] + yanghuiArr[i-1][j];​ }​ }​}​// 7.遍历填充数据的二维数组for (int i = 0; i < yanghuiArr.length; i++) {​ int[] yanghuiValueArr = yanghuiArr[i];​ for (int j = 0; j < yanghuiValueArr.length; j++) {​ System.out.print(yanghuiValueArr[j] + "t");​ }​ System.out.println();​}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。