题目
1. 新建PersonOverride类
a. 属性:String name、int age、boolean gender,所有的变量必须为私有(private)。
b. 有参构造方法,参数为name, age, gender
c. 无参构造方法,使用this(name, age,gender)调用有参构造函数。参数值分别为"default",1,true
d.toString()方法返回格式为:name-age-gender
e. equals方法需比较name、age、gender,这三者内容都相同,才返回true.
2. main方法
2.1 输入n1,使用无参构造函数创建n1个对象,放入数组persons1。
2.2 输入n2,然后指定name age gender。每创建一个对象都使用equals方法比较该对象是否已经在数组中存在,如果不存在,才将该对象放入数组persons2。
2.3 输出persons1数组中的所有对象
2.4 输出persons2数组中的所有对象
2.5 输出persons2中实际包含的对象的数量
2.5 使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));输出PersonOverride的所有构造函数。
解答:
PersonOverride 代码部分:
package com.company;
import java.util.Objects;
public class PersonOverride {
private String name;
private int age;
private boolean gender;
public PersonOverride(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public PersonOverride(){
this("default",1,true);
}
public String toString(){
return getName()+"-"+getAge()+"-"+isGender();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PersonOverride that = (PersonOverride) o;
return age == that.age &&
gender == that.gender &&
name.equals(that.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age, gender);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
}
Main方法部分:
package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
Scanner input1=new Scanner(System.in);
int n1=input1.nextInt();
//数组
PersonOverride[] persons1=new PersonOverride[n1];
for(int i=0;i<n1;i++){
persons1[i]=new PersonOverride();
System.out.println(persons1[i].toString());
}
System.out.println("请输入数量:");
int n2=input1.nextInt();
int j=0;
int temp = 0;
for(int i=0;i<n2;i++){
PersonOverride[] persons2=new PersonOverride[n2];
System.out.println("请输入姓名:");
String name=input1.next();
System.out.println("请输入年龄:");
int age=input1.nextInt();
System.out.println("请输入性别:");
boolean gender=input1.nextBoolean();
persons2[i]= new PersonOverride(name,age,gender);
if(i==0){
System.out.println(persons2[i].toString());
}else if(!persons2[i].equals(persons2[j])){
persons2[i]=persons2[i];
j++;
System.out.println(persons2[i].toString());
temp=+j;
}
}
System.out.println("实际数量:"+temp);
System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));
}
}
以上只是我在学习过程中遇到的Java练习的基础习题,希望在这里可以给初学者一个简单的参考。