系列文章目录
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【面向对象】-作业
![在这里插入图片描述](https://img-blog.csdnimg.cn/e053d9de12bf4ef7850c2513c0a8c8ee.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWFhYWmh5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图片分析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;
}
}
|