Java基础知识点 — 知识点巩固练习题第一部分
1.定义一个Person类 {name, age, job},初始化Person对象数组,有3个person对象,并按照age从大到小进行排序,提示,使用冒泡排序。代码编写在Homework01.java文件种。
1 package com.hspedu.homework; 2 3 public class Homework01 { 4 public static void main(String[] args) { 5 Person[] person = new Person[3]; //注意,这里没有申请Person对象 6 person[0] = new Person("jack",10,"JavaEE工程师"); 7 person[1] = new Person("tom",50,"大数据工程师"); 8 person[2] = new Person("marry",30,"PHP工程师"); 9 //输出当前对象数组 10 for (int i = 0; i < person.length; i++) { 11 System.out.println(person[i]); //默认调用对象的toString方法 12 } 13 //使用冒泡排序处理 14 Person tmp = null; //用于交换的临时变量 15 for (int i = 0; i < person.length - 1; i++) { //外层循环 16 boolean flag = true; 17 for (int j = 0; j < person.length - 1 - i; j++) { //内层循环 18 // 如果前面人的年龄小于后面人的年龄,就交换 19 if(person[j].getAge() < person[j+1].getAge()) { 20 tmp = person[j]; 21 person[j] = person[j+1]; 22 person[j+1] = tmp; 23 flag = false; 24 } 25 } 26 if(flag) { 27 break; 28 } 29 } 30 System.out.println("==============排序后的效果================="); 31 //输出当前对象数组 32 for (int i = 0; i < person.length; i++) { 33 System.out.println(person[i]); //默认调用对象的toString方法 34 } 35 } 36 /* 37 定义一个Person类 {name, age, job},初始化Person对象数组, 38 有3个person对象,并按照age从大到小进行排序,提示,使用冒泡排序。代码编写在Homework01.java文件种。 39 */ 40 } 41 42 class Person { 43 private String name; 44 private int age; 45 private String job; 46 47 public Person(String name, int age, String job) { 48 this.name = name; 49 this.age = age; 50 this.job = job; 51 } 52 53 public String getName() { 54 return name; 55 } 56 57 public void setName(String name) { 58 this.name = name; 59 } 60 61 public int getAge() { 62 return age; 63 } 64 65 public void setAge(int age) { 66 this.age = age; 67 } 68 69 public String getJob() { 70 return job; 71 } 72 73 public void setJob(String job) { 74 this.job = job; 75 } 76 77 @Override 78 public String toString() { 79 return "Person{" + 80 "name='" + name + '\'' + 81 ", age=" + age + 82 ", job='" + job + '\'' + 83 '}'; 84 } 85 }
2.写出四种访问修饰符和各自的访问权限 Homework02.java
| 本类 | 同包 | 子类 | 不同包 | |
| public | ✔ | ✔ | ✔ | ✔ |
| protect | ✔ | ✔ | ✔ | ❌ |
| 默认 | ✔ | ✔ | ❌(子类需要同包) | ❌ |
| private | ✔ | ❌ | ❌ | ❌ |

1 package com.hspedu.homework; 2 3 public class Homework03 { 4 public static void main(String[] args) { 5 Professor professor = new Professor("贾宝玉", 30, "高级", 30000, 1.3); 6 professor.introduce(); 7 } 8 } 9 10 class Teacher { 11 private String name; 12 private int age; 13 private String post; 14 private double salary; 15 //这里我们再增加一个工资级别 16 private double grade; 17 18 public void introduce() { 19 System.out.println("name:" + name + " age:" + age + " post:" + post + " salary:" + salary 20 + " grade" + grade); 21 } 22 23 public Teacher(String name, int age, String post, double salary,double grade) { 24 this.name = name; 25 this.age = age; 26 this.post = post; 27 this.salary = salary; 28 this.grade = grade; 29 } 30 31 public double getGrade() { 32 return grade; 33 } 34 35 public void setGrade(double grade) { 36 this.grade = grade; 37 } 38 39 public String getName() { 40 return name; 41 } 42 43 public void setName(String name) { 44 this.name = name; 45 } 46 47 public int getAge() { 48 return age; 49 } 50 51 public void setAge(int age) { 52 this.age = age; 53 } 54 55 public String getPost() { 56 return post; 57 } 58 59 public void setPost(String post) { 60 this.post = post; 61 } 62 63 public double getSalary() { 64 return salary; 65 } 66 67 public void setSalary(double salary) { 68 this.salary = salary; 69 } 70 } 71 72 class Professor extends Teacher { 73 74 75 public Professor(String name, int age, String post, double salary,double grade) { 76 super(name, age, post, salary,grade); 77 } 78 79 @Override 80 public void introduce() { 81 System.out.println("这是教授的信息"); 82 super.introduce(); 83 } 84 }

思路分析:对于一个程序员而言,需要根据场景或者客户的大体需求分析出业务需求,这一点是很重要的。
1 package com.hspedu.homework; 2 3 public class Homework04 { 4 public static void main(String[] args) { 5 Manager manager = new Manager("刘备",100,20,1.2); 6 //设置奖金 7 manager.setBonus(3000); 8 //打印经理的工资情况 9 manager.printSal(); 10 11 Worker worker = new Worker("关羽", 50, 10, 1.0); 12 worker.printSal(); 13 } 14 } 15 16 class Employee { 17 private String name; 18 private double daySal; 19 private int workDays; 20 //分析出还有一个属性等级 21 private double grade; 22 23 public Employee(String name, double daySal, int workDays, double grade) { 24 this.name = name; 25 this.daySal = daySal; 26 this.workDays = workDays; 27 this.grade = grade; 28 } 29 30 //打印工资方法 31 public void printSal() { 32 System.out.println(name + " 工资=" + daySal*workDays*grade); 33 } 34 35 public String getName() { 36 return name; 37 } 38 39 public void setName(String name) { 40 this.name = name; 41 } 42 43 public double getDaySal() { 44 return daySal; 45 } 46 47 public void setDaySal(double daySal) { 48 this.daySal = daySal; 49 } 50 51 public int getWorkDays() { 52 return workDays; 53 } 54 55 public void setWorkDays(int workDays) { 56 this.workDays = workDays; 57 } 58 59 public double getGrade() { 60 return grade; 61 } 62 63 public void setGrade(double grade) { 64 this.grade = grade; 65 } 66 67 } 68 69 class Manager extends Employee { 70 //特有属性 71 private double bonus; 72 //创建Manager对象时,奖金是多少并不是确定的,因此在构造器中不给奖金 73 //可以通过setBonus赋值 74 public Manager(String name, double daySal, int workDays, double grade) { 75 super(name, daySal, workDays, grade); 76 } 77 78 public double getBonus() { 79 return bonus; 80 } 81 82 public void setBonus(double bonus) { 83 this.bonus = bonus; 84 } 85 86 //方法:重写父类的printSal方法 87 @Override 88 public void printSal() { 89 //因为经理的工资计算方式和Employee不一样,所以我们重写方法 90 System.out.println("经理 " + getName() + " 工资是=" + (bonus+getDaySal()*getWorkDays()*getGrade())); 91 } 92 } 93 94 class Worker extends Employee{ 95 //普通员工没有特有的属性,直接生成构造器即可 96 public Worker(String name, double daySal, int workDays, double grade) { 97 super(name, daySal, workDays, grade); 98 } 99 100 @Override 101 public void printSal() { //因为普通员工和Employee输出工资的情况一样,所以直接调用父类的printSal方法即可 102 System.out.print("普通员工 "); 103 super.printSal(); 104 } 105 }

浙公网安备 33010602011771号