Java基础作业

您所在的位置:网站首页 6的倍数有几个分别是哪些呢 Java基础作业

Java基础作业

2024-06-16 02:24| 来源: 网络整理| 查看: 265

系列文章目录

Java基础01:JAVA概述、基础语法 Java基础02:运算符、流程控制语句、Random随机数 Java基础03:IDEA、快捷键 Java基础04:数组、二维数组 Java基础05:方法 Java基础06:Debug、进制 Java基础07:面向对象基础 Java基础08:API、字符串String、StringBuilder Java基础09:ArrayList集合 Java基础作业

文章目录 系列文章目录day01【前言、入门程序、常量、变量】-作业day02 【数据类型转换、运算符、方法入门】-作业day03【 流程控制语句】-作业day04【数组】-作业day05【方法】 -作业day06【数组方法】-作业day07【面向对象】-作业day08【API、字符串】-作业

day01【前言、入门程序、常量、变量】-作业 第一题:练习今日的代码 第二题:分析以下需求并实现 1.请写出JDK、JRE、JVM的作用 2.请写出JDK、JRE、JVM三者的包含关系 3.请说出java跨平台的原理 答: 1.JRE指java运行环境,包含虚拟机JVM以及java核心类库 (类库:java已经写好的,非常核心的代码仓库) JDK指java各类开发工具编译工具和运行工具 2.JDK(JRE(JVM,核心类库),开发工具) 3.java程序编写完成之后由JVM翻译成各个平台可以运行的版本 第三题:分析以下需求并实现 1.请完整编写HelloWorld入门案例 答: public class HelloWorld(){ public static void main(String args[]){ System.out.println("HelloWorld"); } } 第四题:分析以下需求并实现 1.请写出注释的作用 2.请写出注释的分类 答: 1.对代码进行解释说明 2. 单行注释// 多行注释/* */ 文档注释/** */ 第五题:分析以下需求并实现 1.请写出什么是关键字 2.请写出关键字的特征 3.请列举几个常见的关键字 答: 1.在java中被赋予特殊意义的单词 2.1.都是小写字母 2.在开发软件中由特殊颜色标注 3.public static int double ... 第六题:分析以下需求并实现 1.请写出什么是标识符 2.请写出标识符的组成规则和注意事项 答:给变量,方法,类取的名字就是标识符 答:标识符由数字,字母,下划线和美元符组成.标识符不能是关键字,不能以数字开头,区分大小写. 第七题:分析以下需求并实现 1.请输出以下常量: "I LOVE JAVA" 66 88.88 'a' true false 答: public class PrintlnHomework{ public static void main(String args[]){ System.out.println("I LOVE JAVA"); System.out.println(66); System.out.println(88.88); System.out.println('a'); System.out.println(true); System.out.println(false); } } 第八题:分析以下需求并实现 1.请写出基本数据类型的四类八种 答: 四类:整形,浮点型,字符型,布尔型 八种:byte,short,int,long, float,double, char ,boolean 第九题:分析以下需求并实现 1.请定义并输出以下变量 s = "I LOVE JAVA"; i = 66; d = 88.88; c = 'a'; flag1 = true; flag2 = false; 答: public static void main(String[] args){ String s = "I LOVE JAVA"; int i = 66; double d = 88.88; char c = 'a'; boolean flag1 = true; boolean flag2 = false; System.out.println(s); System.out.println(i); System.out.println(d); System.out.println(c); System.out.println(flag1); System.out.println(flag2); } } 第十题:练习打字并预习下一天视频``` # day02 【数据类型转换、运算符、方法入门】-作业 ```java 第0题:课上的所有练习 第一题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { int i1 = 5; byte b1 = 4; int sum = i1+ b1; System.out.println(sum); } } 答:没毛病 第二题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { int i1 = 5; byte b1 = 4; byte sum = i1+ b1; System.out.println(sum); } } 答:byte short char 三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算,而sum是byte类型,int转byte,大转小有损失。 第三题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { byte b1 = 5; byte sum = b1 + 5; System.out.println(sum); } } 答:byte short char 三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算,而sum是byte类型,int转byte,大转小有损失。 第四题:分析以下需求并实现 1.查看以下代码,并写出结果 public class Test { public static void main(String[] args) { int i1 = 5; boolean result = (i1++ > 5) && (i1++ > 4); System.out.println(result); System.out.println(i1); } } 答: false 6 第五题:分析以下需求并实现 1.查看以下代码,并写出结果 public class Test { public static void main(String[] args) { int i1 = 5; boolean result = (++i1 > 5) || (i1++ > 4); System.out.println(result); System.out.println(i1); } } 答: true 6 public class Test2 { public static void main(String[] args) { int num1 = 10; int num2 = 20; int sum = (num1++) + (--num1) + (num2++) + (num2*10); System.out.println(sum);// ? System.out.println(num1);// ? System.out.println(num2);// ? } } 答: 250 10 21 第六题:分析以下需求并实现 1.请使用三元运算符计算出两个整数中的最大值。 例如:20 40 打印结果:40是最大值 2.键盘录入两个数,判断两个数中的最大值并且打印 例如:20 40 打印结果:40是最大值 答: 1. System.out.println((20>40?20:40)+"是最大值"); 2. import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); System.out.println((a>b?a:b)+"是最大值"); } } 第七题:分析以下需求并实现 1.请使用三元运算符计算出三个整数中的最大值。 例如:20 40 30 打印结果:40是最大值 2.键盘录入三个数,判断三个数中的最大值并且打印 例如:20 40 30 打印结果:40是最大值 答: 1. System.out.println(((20>40)?(20>30?20:30):(40>30?40:30))+"是最大值"); 2. public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); System.out.println(((a>b)?(a>c?a:c):(b>c?b:c))+"是最大值"); } 第八题:分析以下需求并实现 键盘录入一个数,判断其是奇数还是偶数。 如果是奇数输出:你输入的数是奇数 如果是偶数输出:你输入的数是偶数 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数:"); int scout=sc.nextInt(); if(scout%2==0){ System.out.println("偶数"); }else{ System.out.println("奇数"); } } } 第九题: 分析以下需求并实现 键盘录入两个整数数,判断这两个整数的和是否在 10到200之间(包含10和200),并且是个奇数 如果是输出:符合要求 如果不是是输出:不符合要求 答: public static void main(String[] args) { int i, j, k; Scanner sc = new Scanner(System.in); System.out.println("请输入二个整数:"); i = sc.nextInt(); j = sc.nextInt(); k = i + j; if (k >= 10 && k System.out.println("不符合要求"); } } 第十题:完成课上的考试奖励案例 需求:键盘录入学生考试成绩, 根据成绩程序给出不同的奖励。 95~100分 : 自行车一辆 90~94分 : 游乐场一次 80~89分 : 变形金刚一个 80分以下 : 挨顿揍, 这座城市又多了一个伤心的人~ 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个成绩:"); int scout=sc.nextInt(); if(scout>=95){ System.out.println("自行车一辆"); }else if(scout>=90){ System.out.println("游乐场一次"); }else if(scout>=80){ System.out.println("变形金刚一个"); }else{ System.out.println("挨顿揍, 这座城市又多了一个伤心的人~"); } } } 第十一题: 分析以下需求,并用代码实现: (1)根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入 (2)涨工资的条件如下: 工龄 工资涨幅 [10-15) +5000 //[是包括的意思 )是不包括的意思 [10-15) 代表 10岁到15岁 ,包含10,不包含15 [5-10) +2500 [3~5) +1000 [1~3) +500 [0~1) +200 (3)如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元" 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入工龄:"); int age=sc.nextInt(); System.out.println("请输入基本工资:"); int wages=sc.nextInt(); int rise=0; if(age>=10&&age rise=2500; }else if(age>=3&&age rise=500; }else if(age>=0&&age System.out.println("工龄输入错误"); }else{ System.out.println("您目前工作了10年,基本工资为 "+wages+"元, 应涨工资 "+rise+"元,涨后工资 "+(wages+rise)+"元"); } } } day02 【数据类型转换、运算符、方法入门】-作业 第0题:课上的所有练习 第一题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { int i1 = 5; byte b1 = 4; int sum = i1+ b1; System.out.println(sum); } } 答:没毛病 第二题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { int i1 = 5; byte b1 = 4; byte sum = i1+ b1; System.out.println(sum); } } 答:byte short char 三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算,而sum是byte类型,int转byte,大转小有损失。 第三题:分析以下需求并实现 1.以下代码是否会有问题?为什么? public class Test { public static void main(String[] args) { byte b1 = 5; byte sum = b1 + 5; System.out.println(sum); } } 答:byte short char 三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算,而sum是byte类型,int转byte,大转小有损失。 第四题:分析以下需求并实现 1.查看以下代码,并写出结果 public class Test { public static void main(String[] args) { int i1 = 5; boolean result = (i1++ > 5) && (i1++ > 4); System.out.println(result); System.out.println(i1); } } 答: false 6 第五题:分析以下需求并实现 1.查看以下代码,并写出结果 public class Test { public static void main(String[] args) { int i1 = 5; boolean result = (++i1 > 5) || (i1++ > 4); System.out.println(result); System.out.println(i1); } } 答: true 6 public class Test2 { public static void main(String[] args) { int num1 = 10; int num2 = 20; int sum = (num1++) + (--num1) + (num2++) + (num2*10); System.out.println(sum);// ? System.out.println(num1);// ? System.out.println(num2);// ? } } 答: 250 10 21 第六题:分析以下需求并实现 1.请使用三元运算符计算出两个整数中的最大值。 例如:20 40 打印结果:40是最大值 2.键盘录入两个数,判断两个数中的最大值并且打印 例如:20 40 打印结果:40是最大值 答: 1. System.out.println((20>40?20:40)+"是最大值"); 2. import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); System.out.println((a>b?a:b)+"是最大值"); } } 第七题:分析以下需求并实现 1.请使用三元运算符计算出三个整数中的最大值。 例如:20 40 30 打印结果:40是最大值 2.键盘录入三个数,判断三个数中的最大值并且打印 例如:20 40 30 打印结果:40是最大值 答: 1. System.out.println(((20>40)?(20>30?20:30):(40>30?40:30))+"是最大值"); 2. public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); System.out.println(((a>b)?(a>c?a:c):(b>c?b:c))+"是最大值"); } 第八题:分析以下需求并实现 键盘录入一个数,判断其是奇数还是偶数。 如果是奇数输出:你输入的数是奇数 如果是偶数输出:你输入的数是偶数 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个整数:"); int scout=sc.nextInt(); if(scout%2==0){ System.out.println("偶数"); }else{ System.out.println("奇数"); } } } 第九题: 分析以下需求并实现 键盘录入两个整数数,判断这两个整数的和是否在 10到200之间(包含10和200),并且是个奇数 如果是输出:符合要求 如果不是是输出:不符合要求 答: public static void main(String[] args) { int i, j, k; Scanner sc = new Scanner(System.in); System.out.println("请输入二个整数:"); i = sc.nextInt(); j = sc.nextInt(); k = i + j; if (k >= 10 && k System.out.println("不符合要求"); } } 第十题:完成课上的考试奖励案例 需求:键盘录入学生考试成绩, 根据成绩程序给出不同的奖励。 95~100分 : 自行车一辆 90~94分 : 游乐场一次 80~89分 : 变形金刚一个 80分以下 : 挨顿揍, 这座城市又多了一个伤心的人~ 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个成绩:"); int scout=sc.nextInt(); if(scout>=95){ System.out.println("自行车一辆"); }else if(scout>=90){ System.out.println("游乐场一次"); }else if(scout>=80){ System.out.println("变形金刚一个"); }else{ System.out.println("挨顿揍, 这座城市又多了一个伤心的人~"); } } } 第十一题: 分析以下需求,并用代码实现: (1)根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入 (2)涨工资的条件如下: 工龄 工资涨幅 [10-15) +5000 //[是包括的意思 )是不包括的意思 [10-15) 代表 10岁到15岁 ,包含10,不包含15 [5-10) +2500 [3~5) +1000 [1~3) +500 [0~1) +200 (3)如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元" 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入工龄:"); int age=sc.nextInt(); System.out.println("请输入基本工资:"); int wages=sc.nextInt(); int rise=0; if(age>=10&&age rise=2500; }else if(age>=3&&age rise=500; }else if(age>=0&&age System.out.println("工龄输入错误"); }else{ System.out.println("您目前工作了10年,基本工资为 "+wages+"元, 应涨工资 "+rise+"元,涨后工资 "+(wages+rise)+"元"); } } } day03【 流程控制语句】-作业 简答题: 1.switch语句, () 中可以接收的类型有哪些 ? 答:byte、short、char、int、String、enum 2.如果switch语句省略了break, 会出现什么现象? 请简单描述下这个现象 答:如果不加break就会出现case穿透。匹配到哪个case就从哪个位置向下执行,直到遇到了break或者整体结束为止。 3.键盘录入学生成绩, 0 ~ 100分, 根据成绩所在的区间, 打印出不同的奖励机制 对于这个需求, 你觉得应该使用 if , 还是 switch 呢 ? 请说明理由 答:if,因为Switch是让变量匹配某一个数值,不适合范围区间,if是都可以实现。 4.单描述下 Java 中循环的作用, 还有我们为什么要学习循环 ? 答:避免冗余代码,解决重复操作。 5.现有如下代码 , 请说出执行流程和最终结果 public class Demo { public static void main(String[] args){ for(int i = 1; i public static void main(String[] args) { int sum = 0; for (int i = 1; i public static void main(String[] args) { for (int i = 1; i count++; } System.out.println(count); } } } 答: 错误:count定义在for循环内,每次for循环都会对count初始化为0. 更正: public static void main(String[] args) { int count = 0; for (int i = 1; i count++; } } System.out.println(count); } 8.现有如下代码 , 打印所有的水仙花数, 但是代码存在错误, 请说明错误原因, 并更正代码 public class Demo { public static void main(String[] args) { int i = 100; while(i System.out.println(i); } } } } 答: 错误:变量i没有递增,while将无限循环。 更正: public static void main(String[] args) { int i = 100; while(i System.out.println(i); } i++; } } 9.请说出 Java 的三种循环分别是什么 ? 以及各自的区别 答: for循环:循环次数确定使使用。先条件判断再执行循环体 while循环:循环次数不确定使使用。先条件判断再执行循环体 do-while循环:循环次数不确定使使用。至少执行一次循环后再条件判断 编程题: 第一题:练习今日的代码 第二题:分析以下需求并实现 1.功能描述:给定月份,输出对应的季节 2.要求: (1)定义一个月份,例如:int month = 5; (2)输出该月份对应的季节 3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季 (3)演示格式如下: 定义的月份:5 控制台输出:5月份是春季 答: public static void main(String[] args) { Scanner sc=new Scanner(System.in); int month=sc.nextInt(); switch (month){ 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; case 12: case 1: case 2: System.out.println("冬季"); break; } } 第三题:分析以下需求并实现 1.打印1到100之内的整数,但数字中包含9的要跳过 9 19 91 92 个位是9或者十位是9的数要跳过 2.每行输出5个满足条件的数,之间用空格分隔 3.如:1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 答: public static void main(String[] args) { for (int i=1,j=0;i System.out.print(i+" "); j++; } if(j%5==0){ System.out.println(); } } } 第四题:分析以下需求并实现 public class Test11 { public static void main(String[] args) { for(int x=1; x //在此处填写代码 } System.out.println("Java基础班"); } } } 问题: 1.想在控制台输出2次:"Java基础班" 括号()里面应该填写什么? 答:break; 2.想在控制台输出7次:"Java基础班" 括号()里面应该填写什么? 答:continue; 第五题: 键盘录入一个数字, 请计算1~该数字之间, 所有的奇数和, 并将结果打印到控制台上. /* 例如: 录入: 10, 则打印: 1~10之间的奇数和为 25 录入: -10, 则打印: 您录入的数字无效, 请重新录入. 注意: 如果用户录入错误数字, 则一直录入. 直到用户录入正确的数字, 打印完结果后, 程序结束. */ 答: public static void main(String[] args) { System.out.println("请输入正整数:"); Scanner sc=new Scanner(System.in); int sum=0; int num=sc.nextInt(); while(num if(i%2==1){ sum+=i; } } System.out.println("1~"+num+"之间的奇数和为 "+sum); } 第六题(思考题):分析以下需求并实现 "\t" 1.使用嵌套循环完成99乘法表的打印(提示:) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ... 答: public static void main(String[] args) { for(int i=1;i System.out.printf(j+"*"+i+"="+(i*j)+"\t"); } System.out.println(); } } day04【数组】-作业 第一题:练习今日的代码 第二题:分析以下需求并实现 1.看程序说结果,请不要提前运行 public class Test03_01 { public static void main(String[] args) { int[] arr1 = {1,2,3,4,5}; int[] temp1 = arr1; int[] temp2 = arr1; System.out.println("通过temp1取出数组值: "); for(int i = 0;i System.out.print(temp2[i]+" "); } System.out.println(); temp1[2] = 9; System.out.println("通过temp1取出数组值: "); for(int i = 0;i System.out.print(temp2[i]+" "); } System.out.println(); } } 答: 通过temp1取出数组值: 1 2 3 4 5 通过temp2取出数组值: 1 2 3 4 5 通过temp1取出数组值: 1 2 9 4 5 通过temp2取出数组值: 1 2 9 4 5 第三题:分析以下需求并实现 1.看程序说结果,请不要提前运行 public class Test03_02 { public static void main(String[] args) { int[] arr1 = {1,2,3,4,5}; int[] arr2 = {5,6,7}; int[] temp = arr1; System.out.println("通过temp取出arr1中的元素: "); for(int i = 0;i System.out.print(temp[i]+" "); } } } 答: 通过temp取出arr1中的元素: 1 2 3 4 5 通过temp取出arr2中的元素: 5 6 7 第四题:分析以下需求并实现 1.定义一个用于存放班级分数的数组 int[] score = {80,90,85,90,58,88,49,93,98,75}; 2.求出班级不及格人数(分数低于60分的就是不及格) 3.求出班级的总分数 4.求出班级的平均分 答: public static void main(String[] args) { int[] score = {80,90,85,90,58,88,49,93,98,75}; int num=0,sum=0; for (int i = 0; i num++; } } System.out.println("不及格人数:"+num); System.out.println("总分数:"+sum); System.out.println("平均分:"+sum/score.length); } 第五题. 键盘录入6个整数, 将其存入到数组中. 需求一: 统计数组中所有的奇数之和, 并将结果打印到控制台上. 需求二: 将数组元素按照指定格式打印. 例如: 数组元素为: int[] arr = {11, 22, 33, 44, 55}; 打印格式为: [11, 22, 33, 44, 55] 答: import java.util.Arrays; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr=nforew int[6]; int sum=0; for (int i = 0; i sum+=arr[i]; } } System.out.println("其中奇数和为:"+sum); System.out.println(Arrays.toString(arr)); } } 第六题. 使用Random产生10个随机数[22-888],然后放到一个数组中, 1.打印数组元素 2.将数组中是3的整倍数的元素打印出来 答: import java.util.Arrays; import java.util.Random; public class Demo1 { public static void main(String[] args) { Random rd = new Random(); int[] arr=new int[10]; for (int i = 0; i if(i%3==0){ System.out.print(i+" "); } } } } 第七题. 定义一个长度为5的int数组arr,提示用户输入5个1-60(需要判断)之间的数字作为数组元素 生成2-10(包含2和10)之间的随机数num; 遍历数组arr,筛选出数组中不是num倍数的元素输出 答: import java.util.Random; import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[] arr=new int[5]; Random rd=new Random(); int num=rd.nextInt(9)+2; System.out.println("输入5个1-60之间的数字:"); for (int i = 0; i System.out.println("错误:输入1-60之间的数字:"); i--; } } System.out.println("不是"+num+"倍数的元素有:"); for (int i:arr) { if(i%num!=0){ System.out.print(i+" "); } } } } 第八题.在编程竞赛中,有6个评委为参赛的选手打分, 分数为0-100的整数分,选手的最后得分为: 去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[] arr=new int[6]; int max=0,min=0,sum=0; for (int i = 0; i max=arr[i]; min=arr[i]; }else{ if(arr[i]>max){ max=arr[i]; } if(arr[i] i--; } } for (int i:arr) { if(i!=max&&i!=min){ sum+=i; } System.out.println("sum="+sum); } System.out.println("平均分:"+sum/4); } } day05【方法】 -作业 简答题: 1.聊聊你对方法的理解, 以及方法可以为代码带来怎样的好处 ? 答:方法就是一段具有独立功能的代码块,不调用就不执行。 好处:封装一段特定的逻辑功能 ,使程序结构清晰提高可读性、便于代码的重复使用。 2.方法是否可以提高程序的执行效率 ? 答:不可以 3.方法通用的定义格式是什么 ? 再请详细描述下 答: 通用定义格式: public static 返回值类型 方法名(参数类型 参数名,参数类型2 参数名2,.....){ 方法体; return 返回值; } 返回值 :就这件事情做完之后的结果 返回值类型: 这件事情做完后的结果的数据类型 方法名:这件事情的名字 参数:做这件事情需要的东西 参数类型 : 参数的数据类型 参数名:就是给参数取的一个名字 4.请回答形参和实参分别指的是 ? 答: 形参:形式参数,定义方法时声明的参数,接受数据;形参作用域只在方法内起作用,方法调用结束后是释放。 实参:实际参数,调用方法时实际传入的数据。 5.请回答带返回值方法有几种调用格式, 分别是哪几种, 还有不带返回值方法的调用格式 ? 答: 带返回值方法调用格式1:方法名 ( 参数... ) ; 带返回值方法调用格式2:数据类型 变量名 = 方法名 ( 参数 ...) ; 不带返回值方法调用格式1:方法名 ( 参数... ) ; 6.什么是方法重载, 方法重载能带来怎样的好处呢 ? 答: 方法重载:在同一个类中,方法名相同,参数列表不同的方法;参数不同包括:1个参数数不同,2参数类型不同、3参数的多类型顺序不同 方法重载好处:可以少记忆一些复杂的方法名,只需要记住唯一一个方法名称,就可以实现类似的多个功能。 7.我们调用方法传递实际参数的时候, 参数是基本数据类型, 和引用数据类型, 有什么不同 ? 答: java方法传递参数是单向值传递,参数类型的值是数值,引用数据类型的值是首地址。 1.当使用基本数据类型做为方法的形参时,在方法体中对形参的修改不会影响到实参的数值 2.当使用引用数据类型做为方法的形参时,若在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响,由于形参变量和实参变量共享同一块堆区 3.当使用引用数据类型做为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,所以形参变量和实参变量分别指向不一样的堆区 编程题: 1.练习思维导图中的所有案例 2.定义一个方法,该方法可以求任意一个三位数的各个位数的立方和。定义并且调用该方法。 答: public class Demo1 { public static void main(String[] args) { System.out.println(sum3(153)); } public static int sum3(int n){ int g=n%10; int s=n/10%10; int b=n/100%10; int sum=g*g*g+s*s*s+b*b*b; return sum; } } 3.定义一个方法,该方法可以求1~n的和 。n的值是方法调用时传入 答: public class Demo1 { public static void main(String[] args) { System.out.println(sum(3)); } public static int sum(int n){ int s=0; for (int i = 1; i public static void main(String[] args) { int[] arr={1,2,3}; System.out.println(average(arr)); } public static int average(int[] arr){ int sum=0; for (int i = 0; i public static void main(String[] args) { pHello(); } public static void pHello(){ for (int i = 0; i public static void main(String[] args) { byte a=126,b=127; System.out.println(miniNum(123, 321)); System.out.println(miniNum(123.123, 321.321)); System.out.println(miniNum(a, b)); System.out.println(miniNum(99999999L, 99999999999L)); } public static int miniNum(int a,int b){ return a>b?a:b; } public static double miniNum(double a,double b){ return a>b?a:b; } public static byte miniNum(byte a,byte b){ return a>b?a:b; } public static long miniNum(long a,long b){ return a>b?a:b; } } 7.定义一个方法,能够完成对比较三个数的最大值,并将最大值打印,三个数要求使用键盘录入 答: import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a,b,c; a=sc.nextInt(); b=sc.nextInt(); c=sc.nextInt(); System.out.println("最大值:"+maxNum(a, b, c)); } public static int maxNum(int a,int b,int c){ return (a>b)?(a>c?a:c):(b>c?b:c); } } 8.定义方法,用于计算数组中的最大值和最小值,将最大值和最小值返回 答: public class Demo1 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6}; int[] arrMaxMin=numMaxMin(arr); System.out.println("数组中最大值:"+arrMaxMin[0]); System.out.println("数组中最小值:"+arrMaxMin[1]); } public static int[] numMaxMin(int[] arr){ int[] arrMaxMin=new int[2]; for (int i = 0; i arrMaxMin[0]=arr[i]; arrMaxMin[1]=arr[i]; }else{ if(arr[i]>arrMaxMin[0]){ arrMaxMin[0]=arr[i]; }else if(arr[i] public static void main(String[] args) { int[] raArray=new int[10]; Random ra = new Random(); for (int i = 0; i System.out.println(j); } } } 10.定义一个方法,该方法可以判断两个数组是否完全一致(长度一致,内容一致,顺序一致,称之为完全一致。) 例如:{1,2,3} 和{1,2,3} 是完全一致的。{1,2,3} 和{3,2,1} 不是完全一致的 答: public class day03 { public static void main(String[] args) { boolean equally; int[] array1={1,0,3}; int[] array2={1,2,3}; equally=juageArray(array1, array2); System.out.println(equally); } public static boolean juageArray(int[] arr1,int[] arr2){ boolean flag=true; if(arr1.length==arr2.length){ for (int i = 0; i flag=false; break; } } } else flag=false; return flag; } } day06【数组方法】-作业 1.练习课上案例: ①两个元素的交换 ②数组反转 ③二维数组的遍历 ④二维数组求和 2.要求定义一个方法,该方法可以把int类型的一维数组进行反转 (注意考虑需不需要返回值) 答: import java.util.Arrays; public class Demo1 { public static void main(String[] args) { int[] arr={1,2,3,4,5}; System.out.println("反转前:"+Arrays.toString(arr)); reverseArr(arr); System.out.println("反转后:"+Arrays.toString(arr)); } public static void reverseArr(int[] arr){ for(int start=0, end=arr.length-1;start public static void main(String[] args) { System.out.println("反转前:"+Arrays.toString(getRandomArr())); } public static int[] getRandomArr(){ int[] arr=new int [10]; Random rd=new Random(); for (int i = 0; i public static void main(String[] args) { int[] arr={1,2,3,4,5}; System.out.println(judgeNumArr(5, arr)); System.out.println(judgeNumArr(6, arr)); } public static boolean judgeNumArr(int num,int[] arr){ boolean flag=false; for (int i = 0; i flag=true; } } return flag; } } 6.思考题:定义一个方法,该方法可以随机生成10个不重复的数字,随机范围为[1,15] 。(把生成的随机数放在数组中返回) 答: import java.util.Arrays; import java.util.Random; public class Demo1 { public static void main(String[] args) { System.out.println(Arrays.toString(getRandomArr())); } public static int[] getRandomArr(){ Random rd=new Random(); int[] arr=new int[10]; arr[0]=rd.nextInt(15)+1; for (int i = 1; i if(arr[j]==arr[i]){ i--; break; } } } return arr; } } day07【面向对象】-作业

在这里插入图片描述 在这里插入图片描述

图片分析1:两个对象内存分析 答: Test01.class进入方法区,main方法进入栈内存。 在堆内存中新建一个Student对象,默认成员变量name为null、age=0,保存成员方法study和eat的地址;stu1保存该对象内存地址001。 通过stu1中的地址找到堆内存中的指向对象001,将其成员变量name设为张三,age设为23。 打印方法进栈内存,打印stu1指向对象001的name,打印方法出栈内存。 打印方法进栈内存,打印stu1指向对象001的age,打印方法出栈内存。 在堆内存中新建一个Student对象,默认成员变量name为null、age=0,保存成员方法study和eat的地址;stu2保存该对象内存地址002。 通过stu2中的地址找到堆内存中的指向对象002,将其成员变量name设为李四,age设为21。 打印方法进栈内存,打印stu2指向对象002的name,打印方法出栈内存。 打印方法进栈内存,打印stu2指向对象002的age,打印方法出栈内存。 main方法出栈内存。 结论:stu1和stu2指向在堆内存中不同Studen对象 图片分析2:两个地址值指向同一个对象内存分析 答: Test02.class进入方法区,main方法进入栈内存。 在堆内存中新建一个Student对象,默认成员变量name为null、age=0,保存成员方法study和eat的地址;stu1保存该对象内存地址001。 通过stu1中的地址找到堆内存中的指向对象001,将其成员变量name设为张三,age设为23。 将stu1指向对象的内存地址001复制给stu2。 通过stu2中的地址找到堆内存中的指向对象001,将其成员变量name设李四,age设为24。 打印方法进栈内存,打印stu1指向对象001的name,打印方法出栈内存。 打印方法进栈内存,打印stu1指向对象001的age,打印方法出栈内存。 结论:stu1和stu2指向在堆内存中同一个Studen对象 简答题: 1.什么是类 ? 什么是对象, 以及类和对象的关系? 答: 类是对现实世界同一类具有 共同属性 和 行为 的 事物的模拟。 对象是某一类事物的具体体现,是类的具体体现。 通过类创建对象,一个类可以创建多个对象。 2.类的组成部分是 ? 代码中分别用什么进行表示 ? 答: 类的组成:属性和行为 属性:成员变量 行为:成员方法 3.对象的创建格式是 ? 对象创建好之后, 调用对象中的成员格式是 ? 答: 创建对象格式:类名 对象名 = new 类名(); 使用成员变量:对象名.变量名 使用成员方法:对象名.方法名() 4.成员变量和局部变量有哪些区别呢 ? 答: 类中位置不同: 成员变量:类中方法外 局部变量:方法内或者方法声明上 内存中位置不同: 成员变量:堆内存 局部变量:栈内存 生命周期不同: 成员变量:随着对象的存在而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 初始化值不同: 成员变量:有默认的初始化值 局部变量:没有默认的初始化值,必须先定义和赋值才能使用 5.你对 this 关键字的理解, this可以解决什么样的问题 ? 答: this代表当前对象的引用。方法被哪个对象调用,this就代表哪个对象。 this作用:this可以用来区分局部变量和成员变量同名的问题 6.你对 private 关键字的理解, 以及可以解决什么样的问题 ? 答: private关键字是一个权限修饰符,可以修饰成员变量和成员方法, 被private修饰的成员只能在本类中才能访问。 private设置私有,私有是封装的一种表现。可以提高了代码的安全性、提高了代码的复用性。 7.构造方法的本质作用是什么? 格式需要满足哪些要求 ? 答: 构造方法本质就是 构建、创造对象的时候,所调用的方法。 格式: 1.方法名与类名相同,大小写也要一致 2.没有返回值类型,连void都没有 3.没有具体的返回值,即没有return 8.构造方法会在什么时候执行, 能不能通过对象名调用? 答: 创建对象的时候调用,每创建一次对象,就会执行一次构造方法。 不能通过对象名调用。 9.如果一个类中没写构造方法, 还能创建对象吗? 答: 能够创建对象。 如果一个类中没写构造方法,系统将给出一个默认的无参数构造方法。 10.如果一个类中只有带参构造方法, 还能用空参构造创建对象吗 ? 请说明具体原因 答: 不能,若只有带参构造方法,创建对象的时候必须给出初始值,否则报错创建对象不成功。 11.标准的 JavaBean 需要满足哪些要求 ? 答: 1.成员变量使用private修饰 2.提供一个无参构造方法、提供一个带多个参数的构造方法 3.提供每一个成员变量对应的setXxx()/getXxx() 编程题: 第一题:分析以下需求并实现 手机类Phone 属性: 品牌brand 价格price 行为: 打电话call() 发短信sendMessage() 玩游戏playGame() 要求: 1.按照以上要求定义类,属性要私有,生成空参、有参构造,setter和getter方法 2.定义测试类,在main方法中创建该类的对象并给属性赋值(演示两种方法:setter方法和构造方法) 3.调用三个成员方法,打印格式如下: 正在使用价格为998元的小米品牌的手机打电话.... 正在使用价格为998元的小米品牌的手机发短信.... 正在使用价格为998元的小米品牌的手机玩游戏.... 答: package com.zhy.day7; public class Phone { private String brand; private int price; public Phone() { } public Phone(String brand, int price) { this.brand = brand; this.price = price; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public void call(){ System.out.println("正在使用价格为"+price+"元的"+brand+"品牌的手机打电话...."); } public void sendMessage(){ System.out.println("正在使用价格为"+price+"元的"+brand+"品牌的手机发短信...."); } public void playGame(){ System.out.println("正在使用价格为"+price+"元的"+brand+"品牌的手机玩游戏...."); } } package com.zhy.day7; public class TestPhone { public static void main(String[] args) { Phone p1=new Phone("小米",998); Phone p2=new Phone(); p1.call(); p1.sendMessage(); p1.playGame(); p2.setBrand("小米"); p2.setPrice(998); p2.call(); p2.sendMessage(); p2.playGame(); } } 第二题:分析以下需求并实现 1.项目经理类Manager 属性: 姓名name 工号id 工资salary 奖金bonus 行为: 工作work() 2.程序员类Coder 属性: 姓名name 工号id 工资salary 行为: 工作work() 要求: 1.按照以上要求定义Manager类和Coder类,属性要私有,生成空参、有参构造,setter和getter方法 2.定义测试类,在main方法中创建该类的对象并给属性赋值(演示两种方法:setter方法和构造方法) 3.调用成员方法,打印格式如下: 工号为123基本工资为15000奖金为6000的项目经理正在努力的做着管理工作,分配任务,检查员工提交上来的代码..... 工号为135基本工资为10000的程序员正在努力的写着代码...... 答: package com.zhy.day7; public class Manager { private String name; private int id; private int salary; private int bonus; public Manager() { } public Manager(String name, int id, int salary, int bonus) { this.name = name; this.id = id; this.salary = salary; this.bonus = bonus; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } public int getBonus() { return bonus; } public void setBonus(int bonus) { this.bonus = bonus; } public void work(){ System.out.println("工号为"+id+"基本工资为"+salary+"奖金为"+bonus+"的项目经理正在努力的做着管理工作,分配任务,检查员工提交上来的代码....."); } } package com.zhy.day7; public class Coder { private String name; private int id; private int salary; public Coder() { } public Coder(String name, int id, int salary) { this.name = name; this.id = id; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } public void work(){ System.out.println("工号为"+id+"基本工资为"+salary+"的程序员正在努力的写着代码......"); } } package com.zhy.day7; public class Test { public static void main(String[] args) { Manager manager1=new Manager("",123,15000,6000); Manager manager2=new Manager(); Coder coder1=new Coder("",135,10000); Coder coder2=new Coder(); manager2.setId(123); manager2.setSalary(15000); manager2.setBonus(6000); coder2.setId(135); coder2.setSalary(10000); manager1.work(); coder1.work(); manager2.work(); coder2.work(); } } 第三题:分析以下需求并实现 1.猫类Cat 属性: 毛的颜色color 品种breed 行为: 吃饭eat() 抓老鼠catchMouse() 2.狗类Dog 属性: 毛的颜色color 品种breed 行为: 吃饭eat() 看家lookHome() 要求: 1.按照以上要求定义Cat类和Dog类,属性要私有,生成空参、有参构造,setter和getter方法 2.定义测试类,在main方法中创建该类的对象并给属性赋值(演示两种方法:setter方法和构造方法) 3.调用成员方法,打印格式如下: 花色的波斯猫正在吃鱼..... 花色的波斯猫正在逮老鼠.... 黑色的藏獒正在啃骨头..... 黑色的藏獒正在看家..... 答: package com.zhy.day7; public class Cat { private String color; private String breed; public Cat() { } public Cat(String color, String breed) { this.color = color; this.breed = breed; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getBreed() { return breed; } public void setBreed(String breed) { this.breed = breed; } public void eat(){ System.out.println(color+"的"+breed+"正在吃鱼..... "); } public void catchMouse(){ System.out.println(color+"的"+breed+"正在逮老鼠...."); } } package com.zhy.day7; public class Dog { private String color; private String breed; public Dog() { } public Dog(String color, String breed) { this.color = color; this.breed = breed; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getBreed() { return breed; } public void setBreed(String breed) { this.breed = breed; } public void eat(){ System.out.println(color+"的"+breed+"正在啃骨头....."); } public void lookHome(){ System.out.println(color+"的"+breed+"正在看家....."); } } package com.zhy.day7; public class Test2 { public static void main(String[] args) { Cat cat1=new Cat("花色","波斯猫"); Cat cat2=new Cat(); Dog dog1=new Dog("黑色","藏獒"); Dog dog2=new Dog(); cat2.setColor("花色"); cat2.setBreed("波斯猫"); dog2.setColor("黑色"); dog2.setBreed("藏獒"); cat1.eat(); cat1.catchMouse(); dog1.eat(); dog1.lookHome(); cat2.eat(); cat2.catchMouse(); dog2.eat(); dog2.lookHome(); } } day08【API、字符串】-作业 简答题: 1.String 类的特点是什么? 答: String类位于java.long包下,不需要导包 java程序中,所以的双引号的字符串,都是String类的对象 字符串是常量,它在创造后不能更改 2.通过构造方法创建字符串对象, 对比双引号创建字符串对象, 两者有什么区别 ? 答: 通过构造方法创建字符串对象存储在堆内存中,每new一次都会在堆内存中开辟一个新的空间 双引号创建字符串对象是存放在堆内存中的字符串常量池中的,双引号创建字符串对象时,会在字符串常量池中查找,若是找到直接就引用,若没找到就创建 3.String 和 StringBuilder 之间该如何进行转换 ? 答: 1. StringBuilder 转换为 String public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String 2. String 转换为 StringBuilder public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilde 编程题: 0.使用科学编程学习方法,找到对应的方法 1.课上所有案例 2. 需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽 最终效果为:156****1234 import java.util.Scanner; public class day03 { public static void main(String[] args) { System.out.println("请输入你的手机号"); Scanner scanner = new Scanner(System.in); String phone=scanner.next(); String statPhone = phone.substring(0, 3); String endPhone = phone.substring(7); System.out.println(statPhone+"****"+endPhone); } } 3.需求:键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换 import java.util.Scanner; public class day03 { public static void main(String[] args) { System.out.println("请输入"); Scanner scanner = new Scanner(System.in); String str=scanner.next(); String tmd = str.replace("TMD", "***"); System.out.println(tmd); } } 4. 需求:以字符串的形式从键盘录入学生信息,例如:“张三 , 23” “张三” "23" 从该字符串中切割出有效数据,封装为Student学生对象 Student类 package com.qyx; public class Student { private String name; private String age; public Student() { } public Student(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public String getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } } 测试类: import java.util.Scanner; public class day08 { public static void main(String[] args) { System.out.println("请输入学生信息"); Scanner scanner = new Scanner(System.in); String str=scanner.next(); String[] split = str.split(","); Student student = new Student(split[0], split[1]); System.out.println(student.getName()); System.out.println(student.getAge()); } } 5.有如下字符串:"12ab","java","cd","Server78" 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串 public class day03 { public static void main(String[] args) { int j; String[] strArray={"12ab","java","cd","Server78"}; for (int i = 0; i if (chars[j]>='0' && chars[j] for (int k = 0; k public static void main(String[] args) { int i=0; System.out.println("请输入手机号码"); Scanner scanner = new Scanner(System.in); String phone = scanner.next(); char[] charsPhone = phone.toCharArray(); if(charsPhone.length==11 && CELmentond(charsPhone)) { System.out.println("手机号后四位为;"+phone.substring(7)); } else { System.out.println("注册用户失败"); } } public static boolean CELmentond(char[] arr){ int i; for (i = 0; i public static void main(String[] args) { System.out.println("请输入一个字符串"); Scanner scanner = new Scanner(System.in); String str = scanner.next(); if(isSymmetry(str)==true){ System.out.println("是对称字符串"); }else { System.out.println("不是对称字符串"); } } public static boolean isSymmetry(String str){ int i,j; char[] chars = str.toCharArray(); for ( i=0,j=chars.length-1;i return true; } else return false; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3