java练习题(内部类&API)

1

请补充下列代码,使测试类编译通过并运行。 已知代码材料
public class Demo1 {
    public static void main(String[] args) {
        Person p = getInstance();
        p.eat();
    }

    private static ? getInstance() {
        // 请补齐代码,使得编译通过,并在控制台输出(吃饭)
    }

}

class Person {
    public void eat(){
        System.out.println("吃饭");
    }
}
运行结果:
吃饭

参考答案

package cn.Work1202.hooong_01;

public class Demo {
    public static void main(String[] args) {
        Person p = getInstance();
        p.eat();
    }

    private static Person getInstance() {
        // 请补齐代码,使得编译通过,并在控制台输出(吃饭)
        return new Person();
    }

}

class Person {
    public void eat(){
        System.out.println("吃饭");
    }
}

2

请补充下列代码,在main方法中调用method方法,并编译通过,最终在控制台输出(狗吃肉,狗看家)
public class Demo2 {
    public static void main(String[] args) {
        // 请在此处调用method方法
    }

    public static void method(Animal a){
        a.eat();
        a.watchHome();
    }
}

abstract class Animal {
    public abstract void eat();
}

class Dog extends Animal{

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

    public void watchHome(){
        System.out.println("狗看家");
    }
}
运行结果:
狗吃肉
狗看家

参考答案

  public static void method(Animal a){
        a.eat();
        if (a instanceof Dog){
            Dog dog=(Dog) a;
            dog.watchHome();
        }
    }
}

abstract class Animal {
    public abstract void eat();
}

class Dog extends Animal{

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }

    public void watchHome(){
        System.out.println("狗看家");
    }
}

3

请完善下列代码,在main方法中调用Inner的method方法,并依次在控制台输出30,20,10
public class Demo3 {
    public static void main(String[] args) {
        // 请在此处调用Inner类中的method方法
    }
}

class Outer {
    int num = 10;
    class Inner {
        int num = 20;
        public void method(){
            int num = 30;
            // ---完善代码---
            System.out.println();       // 输出30
            System.out.println();       // 输出20
            System.out.println();       // 输出10
        }
    }
}
运行结果
30
20
10

参考答案

package cn.Work1202.hooong_03;

public class Demo {
    public static void main(String[] args) {
        // 请在此处调用Inner类中的method方法
        Outer.Inner i = new Outer().new Inner();
        i.method();
    }
}

class Outer {
    int num = 10;
    class Inner {
        int num = 20;
        public void method(){
            int num = 30;
            // ---完善代码---
            System.out.println(num);       // 输出30
            System.out.println(this.num);       // 输出20
            System.out.println(Outer.this.num);       // 输出10
        }
    }
}

4

请结合已有代码,补齐Outer中的代码,要求在控制台输出”HelloWorld”(必须使用匿名内部类)
public class Demo4 {
    public static void main(String[] args) {
        Outer.method().show();
    }
}

interface Inter {
    void show();
}

class Outer {
    //补齐代码
}
运行结果:
HelloWorld

参考答案

package cn.Work1202.hooong_05;

public class Demo {
    public static void main(String[] args) {
        Outer.method().show();
    }
}

interface Inter {
    void show();
}

class Outer {
    //补齐代码
    public static Inter method(){
        Inter inter=new Inter(){
            @Override
            public  void show() {
                System.out.println("HelloWord");
            }
        };
        return inter;
    }
}

5

某程序员编写了如下代码,想要测试该代码的执行时间。请帮忙计算methodA方法执行了多长时间?
public class Demo5 {
    public static void main(String[] args) {
        /*
        	-----计算methodA方法执行了多长时间?-----
        */
        methodA();
    }

    public static void methodA() {
        int sum = 0;
        for (int i = 1; i <= 1000; i++) {
            if (i % 2 == 0) {
                sum += i;
            }
        }
        System.out.println("1-1000之间的偶数和为:" + sum);
    }
}
运行结果:
1-1000之间的偶数和为:250500
methodA的执行时间为:28

参考答案

package cn.Work1202.hooong_06;

public class Demo {
    public static void main(String[] args) {
        /*
           -----计算methodA方法执行了多长时间?-----
        */
        long i1 = System.currentTimeMillis();
        methodA();
        long i2 = System.currentTimeMillis();
        System.out.println("methodA的执行时间为:28"+(i2-i1)+"毫秒");
    }

    public static void methodA() {
        int sum = 0;
        for (int i = 1; i <= 1000; i++) {
            if (i % 2 == 0) {
                sum += i;
            }
        }
        System.out.println("1-1000之间的偶数和为:" + sum);
    }
}

6

请对Person类进行补充,保证程序运行后结果为: 张三...23 李四...24 (不可修改main方法内部代码,只能操作Person类)
public class Demo6 {
    public static void main(String[] args) {
        // 创建对象,并初始化数据
        Person p1 = new Person("张三",23);
        Person p2 = new Person("李四",24);
        // 输出对象中数据
        System.out.println(p1.toString());
        System.out.println(p2);
    }
}

class Person {
    private String name;
    private int age;
    /*
        请补充代码!
    */
    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }
}
运行结果:
张三...23
李四...24

参考答案

package cn.Work1202.hooong_07;

public class Demo {
    public static void main(String[] args) {
        // 创建对象,并初始化数据
        Person p1 = new Person("张三",23);
        Person p2 = new Person("李四",24);
        // 输出对象中数据
        System.out.println(p1.toString());
        System.out.println(p2);
    }
}

class Person {
    private String name;
    private int age;
    /*
        请补充代码!
    */
    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

    @Override
    public String toString() {
        return getName()+"..."+getAge();
    }
}

7

现有两个Person对象,属性都是(张三 , 23)请对Person类进行补充,保证程序运行后结果为true (不可修改main方法内部代码,只能操作Person类)
public class Demo7 {
    public static void main(String[] args) {
        // 创建对象,并初始化数据
        Person p1 = new Person("张三",23);
        Person p2 = new Person("张三",23);
		// 比较两个对象
        System.out.println(p1.equals(p2));
    }
}

class Person{
    private String name;
    private int age;

    /*
        请补充代码, 使程序运行结果满足需求
     */

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }
}
运行结果:
true

参考答案

package cn.Work1202.hooong_08;

public class Demo {
    public static void main(String[] args) {
        // 创建对象,并初始化数据
        Person p1 = new Person("张三",23);
        Person p2 = new Person("张三",23);
        // 比较两个对象
        System.out.println(p1.equals(p2));
    }
}

class Person{
    private String name;
    private int age;

    /*
        请补充代码, 使程序运行结果满足需求
     */

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }
}

8

某公司发放年终礼品,但hr在统计的时候发现有很多同姓名同年龄的员工,所以决定对这一部分员工,发放【缘分大礼包】,其余员工发放【普通大礼包】,请用技术手段,完成礼品的分发。 现有4个员工信息:
张三,23
李四,24
张三,23
张三,28
运行结果:
Employee{name=张三,age=23}获得了缘分大礼包
Employee{name=李四,age=24}获得了普通大礼包
Employee{name=张三,age=23}获得了缘分大礼包
Employee{name=张三,age=28}获得了普通大礼包

参考答案

package cn.Work1202.hooong_09;

public class Staff {
    private String name;
    private int age;
    private String grade="普通大礼包";

    public Staff() {
    }

    public Staff(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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 String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Staff staff = (Staff) o;

        if (age != staff.age) return false;
        return name != null ? name.equals(staff.name) : staff.name == null;
    }

    @Override
    public String toString() {
        return "Staff{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
package cn.Work1202.hooong_09;

import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {
        Staff s1 = new Staff("张三", 23);
        Staff s2 = new Staff("李四", 24);
        Staff s3 = new Staff("张三", 23);
        Staff s4 = new Staff("张三", 28);
        ArrayList<Staff> staff = new ArrayList<>();
        staff.add(s1);
        staff.add(s2);
        staff.add(s3);
        staff.add(s4);
        for (int i = 0; i < staff.size()-1; i++) {
            for (int i1 = 1+i; i1 < staff.size()-1; i1++) {
                if (staff.get(i).equals(staff.get(i1))){
                    staff.get(i).setGrade("缘分大礼包");
                    staff.get(i1).setGrade("缘分大礼包");
                }
            }
        }
        for (int i = 0; i < staff.size(); i++) {
            System.out.println(staff.get(i)+staff.get(i).getGrade());
        }
    }
}
发布了68 篇原创文章 · 获赞 59 · 访问量 2318

猜你喜欢

转载自blog.csdn.net/Ruoice/article/details/103357138