Java2EE基础练习及面试题_chapter04面向对象(上_01)

简介: Java2EE基础练习及面试题_chapter04面向对象(上_01)


申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址

全文共计17671字,阅读大概需要10分钟

欢迎关注我的个人公众号:不懂开发的程序猿

题目01

/*
要求:(1)创建Person类的对象,设置该对象的name、
age和sex属性,调用study方法,输出字符串
“studying”,调用showAge()方法显示age值,调用
addAge()方法给对象的age属性值增加2岁。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 11:16
 */
public class Exer1 {
    /*
    要求:(1)创建Person类的对象,设置该对象的name、
    age和sex属性,调用study方法,输出字符串
    “studying”,调用showAge()方法显示age值,调用
    addAge()方法给对象的age属性值增加2岁。
     */
    public static void main(String[] args) {
        Person person = new Person();
        person.study();
        person.showAge();
        person.addAge();
    }
}
class Person {
    int age = 15;
    String name = "jerry";
    int sex = 1;
    public void study() {
        System.out.println("studying");
    }
    public int showAge() {
        return age;
    }
    public int addAge() {
        return age += 2;
    }
}

题目02

/*
方法的声明与调用
(1)声明一个圆柱体类型,
(2)声明属性:底边的半径,和高
(3)声明方法:
A:方法的功能:在方法中打印圆柱体的详细信息
    圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。
B:方法的功能:返回底面积
C:方法的功能:返回体积
D:方法的功能:为圆柱体的底边的半径,和高赋值
E:方法的功能:为圆柱体的底边的半径,和高赋值,并返回赋值的结果
    如果底边的半径或高为<=0,赋值失败,返回false,否则返回true
(4)并测试
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 16:06
 */
public class Exer2 {
    /*
    方法的声明与调用
    (1)声明一个圆柱体类型,
    (2)声明属性:底边的半径,和高
    (3)声明方法:
    A:方法的功能:在方法中打印圆柱体的详细信息
        圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。
    B:方法的功能:返回底面积
    C:方法的功能:返回体积
    D:方法的功能:为圆柱体的底边的半径,和高赋值
    E:方法的功能:为圆柱体的底边的半径,和高赋值,并返回赋值的结果
        如果底边的半径或高为<=0,赋值失败,返回false,否则返回true
    (4)并测试
     */
    public static void main(String[] args) {
        Cylinder cylinder = new Cylinder();
        cylinder.setParam(3.0, 2.0);
        cylinder.printDetails();
        System.out.println("底面积是:"+cylinder.getSquare());
        System.out.println("体积是:"+cylinder.getVolume());
    }
}
class Cylinder {
    double radius, height;
    public void printDetails(){
        System.out.println("圆柱体的底边的半径是"+radius+",高是"+height+",底面积是"+getSquare()+",体积是"+getVolume());
    }
    public double getSquare(){
        double area=Math.PI*radius*radius;
        return area;
    }
    public double getVolume(){
        double volume = getSquare()*height;
        return volume;
    }
    public void setParam(double radius,double height){
        this.radius=radius;
        this.height=height;
    }
    public boolean getParam(double radius, double height){
        if (radius<0||height<0){
            return false;
        }
        setParam(radius, height);
        return true;
    }
}

题目03

package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 16:14
 */
public class Exer3 {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.playGame();
        phone.sendEmail();
        phone.showPrice();
    }
}
class Phone {
    double price=1999.0;//价格
    public void sendEmail(){
        System.out.println("发送邮件");
    }
    public void playGame(){
        System.out.println("玩游戏");
    }
    public void showPrice(){
        System.out.println("手机价格为:" + price);
    }
}

题目04

/*
利用面向对象的编程方法,设计类Circle计算圆的面积
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 16:40
 */
public class Exer4 {
    /*
    利用面向对象的编程方法,设计类Circle计算圆的面积
     */
    public static void main(String[] args) {
        Circle circle = new Circle();
        circle.setRadius(3.0);
        System.out.println("圆的面积: "+circle.getCircle());
    }
}
class Circle{
    double radius;
    public void setRadius(double radius){
        this.radius=radius;
    }
    public double getCircle(){
        double area = Math.PI*radius*radius;
        return area;
    }
}

题目05

/*
 编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形,在main方法中调用该方法。
 */
/*
 修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。
 */
/*
修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。
 */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-26 17:00
 */
public class Exer5 {
    /*
     编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形,在main方法中调用该方法。
     */
    /*
     修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,
接收返回的面积值并打印。
     */
    /*
    修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法
中调用该方法,接收返回的面积值并打印。
     */
    public static void main(String[] args) {
        Method method = new Method();
        System.out.println("请输入矩形的长:");
        Scanner scanner1 = new Scanner(System.in);
        double height = scanner1.nextDouble();
        System.out.println("请输入矩形的宽:");
        Scanner scanner2 = new Scanner(System.in);
        double width = scanner2.nextDouble();
        method.setParam(height, width);
        method.printRec();
        System.out.println("该矩形的面积: " + method.getArea());
    }
}
class Method {
    double height, width;
    public void setParam(double height, double width) {
        this.height = height;
        this.width = width;
    }
    public void printRec() {
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                System.out.print("*" + "\t");
            }
            System.out.println();
        }
    }
    public double getArea() {
        double area = height * width;
        return area;
    }
}

题目06

/*
4. 对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1) 生成随机数:Math.random(),返回值类型double;
2) 四舍五入取整:Math.round(double d),返回值类型long。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 17:15
 */
public class Exer6 {
    /*
    4. 对象数组题目:
    定义类Student,包含三个属性:学号number(int),年级state(int),成绩
    score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
    问题一:打印出3年级(state值为3)的学生信息。
    问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
    提示:
    1) 生成随机数:Math.random(),返回值类型double;
    2) 四舍五入取整:Math.round(double d),返回值类型long。
     */
    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            Student student = new Student();
            student.setParam((int) (Math.random() * 20 + 1), (int) (Math.random() * 3 + 1), (int) (Math.random() * 100));
            if (student.state==3){
                student.printInfo();
            }
        }
    }
}
class Student {
    int number;
    int state;
    int score;
    public void setParam(int number, int state, int score) {
        this.number = number;
        this.state = state;
        this.score = score;
    }
    public void printInfo() {
        System.out.println("学号: " + number + ",年级:" + state + ",成绩:" + score);
    }
}

题目07

/*
声明一个日期类型MyDate:有属性:年year,月month,日day。创建2个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 17:32
 */
public class Exer7 {
    /*
    声明一个日期类型MyDate:有属性:年year,月month,日day。创建2个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息。
     */
    public static void main(String[] args) {
        MyDate myDate = new MyDate();
        myDate.setParam(1998, 05, 17);
        myDate.printInfo();
    }
}
class MyDate{
    int year,month,day;
    public void setParam(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printInfo(){
        System.out.println("出生日期:"+year+"年,"+month+"月,"+day+"日");
    }
}

题目08

/*
编写程序,定义三个重载方法并调用。方法名为mOL。
三个方法分别接收一个int参数、两个int参数、一个字符串参数。
分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息
在主类的main ()方法中分别用参数区别调用三个方法。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 17:43
 */
public class Exer8 {
    /*
    编写程序,定义三个重载方法并调用。方法名为mOL。
三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别
执行平方运算并输出结果,相乘并输出结果,输出字符串信息。
在主类的main ()方法中分别用参数区别调用三个方法。
     */
    public static void main(String[] args) {
        OverLoad overLoad = new OverLoad();
        overLoad.mOL(1);
        overLoad.mOL(2, 3);
        overLoad.mOL("Hello");
    }
}
class OverLoad {
    //    int num;
    public void mOL(int num) {
        System.out.println("num: " + num);
//        return num;
    }
    public int mOL(int num1, int num2) {
        int sum = num1 * num2;
        System.out.println("num1 * num2 = "+sum);
        return sum;
    }
    public void mOL(String str) {
        System.out.println("str: "+str);
//        return str;
    }
}

题目09

/*
定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,第三个方法求三个double值中的最大值,并分别调用三个方法。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 17:53
 */
public class Exer9 {
    /*
    定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,第三个方法求三个double值中的最大值,
并分别调用三个方法。
     */
    public static void main(String[] args) {
        OverLoad1 overLoad1 = new OverLoad1();
        overLoad1.max(2, 3);
        overLoad1.max(2.0, 3.0);
        overLoad1.max(2.0, 3.0, 4.0);
    }
}
class OverLoad1 {
    public void max(int num1, int num2) {
        int max = Math.max(num1, num2);
        System.out.println(max);
    }
    public void max(double num1, double num2) {
        double max = Math.max(num1, num2);
        System.out.println(max);
    }
    public void max(double num1, double num2, double num3) {
       double max=  num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
        System.out.println(max);
    }
}

题目10

/*
定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义
如下:public void printAreas(Circle c, int time)
在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。
例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。
(3)在main方法中调用printAreas()方法,调
用完毕后输出当前半径值。程序运行结果如图
所示。
 */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-26 20:26
 */
public class Exer11 {
    /*
    定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
    (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义
    如下:public void printAreas(Circle c, int time)
    在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积。
    例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。
    (3)在main方法中调用printAreas()方法,调
    用完毕后输出当前半径值。程序运行结果如图
    所示。
     */
    public static void main(String[] args) {
        PassObject obj = new PassObject();
        obj.printAreas(new Circle1(), 5);
    }
}
class Circle1 {
    public double findArea(double radius) {
        double area = Math.PI * radius * radius;
        return area;
    }
}
class PassObject {
    public void printAreas(Circle1 c, int time) {
        System.out.println("请输入一个整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println("Radius" + "\t   \t" + "Area");
        for (int i = 1; i <= num; i++) {
            System.out.println((double) i + "\t \t" + c.findArea(i));
        }
    }
}

题目11

//递归计算1-100之间所有自然数的和

package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-26 20:41
 */
public class Exer12 {
    //递归计算1-100之间所有自然数的和
    public static void main(String[] args) {
        Sum sum = new Sum();
        sum.sum(100);
    }
}
class Sum{
    public int sum(int num){
        if(num == 1){
            System.out.println(1);
            return 1;
        }else{
            int sum =num + sum(num -1 );
            System.out.println(sum);
            return sum;
        }
    }
}

题目12

/*
请用Java写出递归求阶乘(n!)的算法
 */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-27 8:22
 */
public class Exer13 {
    /*
    请用Java写出递归求阶乘(n!)的算法
     */
    public static void main(String[] args) {
        System.out.println("请输入一个整数求阶乘:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        Recursion recursion = new Recursion();
        recursion.factorial(num);
    }
}
class Recursion {
    public int factorial(int num) {
        if (num==1){
            System.out.println("result: " + 1);
            return 1;
        }else {
            int result = num * factorial(num -1);
            System.out.println("result: "+result);
            return result;
        }
    }
}

题目13

/*
  已知有一个数列:f(0) = 1,f(1) = 4,f(n+2)=2*f(n+1) + f(n),其中n是大于0的整数,求f(10)的值。
   */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-27 9:17
 */
public class Exer14 {
    /*
      已知有一个数列:f(0) = 1,f(1) = 4,f(n+2)=2*f(n+1) + f(n),其中n是大于0的整数,求f(10)的值。
       */
    public static void main(String[] args) {
        System.out.println("请输入一个大于0的整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        Func1 f = new Func1();
        f.func(num);
    }
}
class Func{
    public int func(int num){
        if (num ==0){
            System.out.println("result: " + 1);
            return 1;
        }else if (num == 1){
            System.out.println("result: " + 4);
            return 4;
        }else {
            int result=2*func(num-1)+func(num-2);
            System.out.println("result: " + result);
            return result;
        }
    }
}

题目14

/*
已知一个数列:f(20) = 1,f(21) = 4,f(n+2) = 2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值。
 */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-27 9:17
 */
public class Exer15 {
    /*
    已知一个数列:f(20) = 1,f(21) = 4,f(n+2) = 2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值。
     */
    public static void main(String[] args) {
        System.out.println("请输入一个大于0的整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        Func1 f = new Func1();
        f.func(num);
    }
}
class Func1 {
    public int func(int num){
        if (num ==20){
            System.out.println("result: " + 1);
            return 1;
        } if (num == 21){
            System.out.println("result: " + 4);
            return 4;
        }else {
            int result=func(num+2)-2*func(num-1);
            System.out.println("result: " + result);
            return result;
        }
    }
}

题目15

    输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值
1 1 2 3 5 8 13 21 34 55
规律:一个数等于前两个数之和
要求:计算斐波那契数列(Fibonacci)的第n个值,并将整个数列打印出来
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-27 9:27
 */
public class Exer16 {
    /*
    输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值
1 1 2 3 5 8 13 21 34 55
规律:一个数等于前两个数之和
要求:计算斐波那契数列(Fibonacci)的第n个值,并将整个数列打印出来
     */
    public static void main(String[] args) {
        System.out.println("输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值: ");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        Fibonacci fibonacci = new Fibonacci();
        fibonacci.f(num);
    }
}
class Fibonacci {
    public int f(int num) {
        if (num==1){
            System.out.println("result: " + 1);
            return 1;
        }
        if (num==2){
            System.out.println("result: " + 1);
            return 1;
        }else {
            int result = f(num-1)+f(num-2);
            System.out.println("result: " + result);
            return result;
        }
    }
}

题目16

/*
创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
在 PersonTest 类 中实例化 Person 类的对象 b , 调 用 setAge() 和
getAge()方法,体会Java的封装性。
 */
package com.jerry.java;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-27 9:40
 */
public class Exer17 {
    /*
    创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
    用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
    在 PersonTest 类 中实例化 Person 类的对象 b , 调 用 setAge() 和
    getAge()方法,体会Java的封装性。
     */
    public static void main(String[] args) {
        Person1 person1 = new Person1();
        System.out.println("设置人的合法年龄(0~130): ");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        person1.setAge(age);
        person1.getAge();
        person1.getName();
    }
}
class Person1 {
    private int age;
    private String name;
    public Person1() {
        age=18;
        name = "jerry";
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        this.age = age;
        System.out.println("年龄是:" + age);
        return age;
    }
    public String getName() {
        System.out.println("名字是:"+name);
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

题目17

/*
编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
边长base和高height,同时声明公共方法访问私有变量。此外,提供类
必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-27 9:47
 */
public class Exer18 {
    /*
    编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底
    边长base和高height,同时声明公共方法访问私有变量。此外,提供类
    必要的构造器。另一个类中使用这些公共方法,计算三角形的面积。
     */
    public static void main(String[] args) {
        TriAngle triAngle = new TriAngle();
        triAngle.setBase(3);
        System.out.println(triAngle.getBase());
        triAngle.setHeight(4);
        System.out.println(triAngle.getHeight());
        System.out.println(triAngle.toString());
        double area = triAngle.getBase() * triAngle.getHeight() * 0.5;
        System.out.println("三角形的面积: " + area);
    }
}
class TriAngle {
    private int base;
    private int height;
    public TriAngle() {
    }
    public TriAngle(int base, int height) {
        this.base = base;
        this.height = height;
    }
    public int getBase() {
        return base;
    }
    public void setBase(int base) {
        this.base = base;
    }
    public int getHeight() {
        return height;
    }
    public void setHeight(int height) {
        this.height = height;
    }
    @Override
    public String toString() {
        return "TriAngle{" +
                "base=" + base +
                ", height=" + height +
                '}';
    }
}

题目18

/*
(1)定义Student类,有4个属性:
String name;
int age;
String school;
String major;
(2)定义Student类的3个构造器:
第一个构造器Student(String n, int a)设置类的name和age属性;
第二个构造器Student(String n, int a, String s)设置类的name, age 和school属性;
第三个构造器Student(String n, int a, String s, String m)设置类的name, age ,school和major属性;
(3)在main方法中分别调用不同的构造器创建的对象,并输出其属性值。
 */
package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-27 10:10
 */
public class Exer19 {
    /*
    (1)定义Student类,有4个属性:
    String name;
    int age;
    String school;
    String major;
    (2)定义Student类的3个构造器:
    第一个构造器Student(String n, int a)设置类的name和age属性;
    第二个构造器Student(String n, int a, String s)设置类的name, age 和school属性;
    第三个构造器Student(String n, int a, String s, String m)设置类的name, age ,school和major属性;
    (3)在main方法中分别调用不同的构造器创建的对象,并输出其属性值。
     */
    public static void main(String[] args) {
        System.out.println("=================jerry================");
        Student1 s1 = new Student1("jerry", 18);
        System.out.println(s1.getName());
        System.out.println(s1.getAge());
        System.out.println(s1.toString());
        System.out.println("=================tom================");
        Student1 s2 = new Student1("tom", 19, "M1");
        System.out.println(s2.toString());
        s2.setName("tom1");
        System.out.println(s2.getName());
        s2.setAge(20);
        System.out.println(s2.getAge());
        s2.setSchool("M2");
        System.out.println(s2.getSchool());
        System.out.println(s2.toString());
        System.out.println("=================Lily================");
        Student1 s3 = new Student1("Lily", 20, "L1", "CS");
        System.out.println(s3.toString());
        s3.setMajor("EE");
        System.out.println(s3.getMajor());
        System.out.println(s3.toString());
    }
}
class Student1 {
    private String name;
    private int age;
    private String school;
    private String major;
    public Student1(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Student1(String name, int age, String school) {
        this.name = name;
        this.age = age;
        this.school = school;
    }
    public Student1(String name, int age, String school, String major) {
        this.name = name;
        this.age = age;
        this.school = school;
        this.major = major;
    }
    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 getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
    @Override
    public String toString() {
        return "Student1{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school='" + school + '\'' +
                ", major='" + major + '\'' +
                '}';
    }
}

题目19

package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-27 10:46
 */
public class Exer20 {
    public static void main(String[] args) {
        Boy boy = new Boy("罗密欧", 21);
        boy.shout();
        Girl girl = new Girl("朱丽叶", 18);
        girl.marry(boy);
        Girl girl1 = new Girl("祝英台", 19);
        int var = girl.compare(girl1);
        if (var>0){
            System.out.println(girl.getName()+"大");
        }
        if (var<0){
            System.out.println(girl1.getName()+"大");
        }
        if (var==0){
            System.out.println("一样大");
        }
    }
}
class Boy {
    private String name;
    private int age;
    public Boy() {
    }
    public Boy(String name) {
        this.name = name;
    }
    public Boy(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void marry(Girl girl) {
        System.out.println("我想娶:" + girl.getName());
//        girl.marry(this);
    }
    public void shout() {
        if (this.age >= 22) {
            System.out.println("你可以去合法登记结婚了!");
        } else {
            System.out.println("先多谈谈恋爱~~");
        }
    }
}
class Girl {
    private String name;
    private int age;
    public Girl() {
    }
    public Girl(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void marry(Boy boy) {
        System.out.println("我想嫁给" + boy.getName());
        boy.marry(this);
    }
    /**
     * @param girl
     * @return
     */
    public int compare(Girl girl) {
        if (this.age > girl.age) {
            return 1;
        } else if (this.age < girl.age) {
            return -1;
        } else {
            return 0;
        }
    }
}

JavaBean创建的模板

package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-27 10:32
 */
public class JavaBean {//类是公共的
    private String name;//有属性,且有对应的get、set方法
    private int age;
    public JavaBean(){//有一个无参的公共的构造器
    }
    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;
    }
}

题目20

package com.jerry.java;
/**
 * @author jerry_jy
 * @create 2022-09-27 10:41
 */
public class PersonTest {
    public static void main(String[] args) {
        Person2 per1 = new Person2("张三") ;
        Person2 per2 = new Person2("李四") ;
        per1.getInfo() ; // 当前调用getInfo()方法的对象是per1
        per2.getInfo() ; // 当前调用getInfo()方法的对象是per2
        boolean b = per1.compare(per2);
        System.out.println(b);
    }
}
class Person2 { // 定义Person类
    String name;
    Person2(String name) {
        this.name = name;
    }
    public void getInfo() {
        System.out.println("Person类 --> " + this.name);
    }
    public boolean compare(Person2 p) {
        return this.name == p.name;
    }
}


相关文章
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
33 2
|
13天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
19天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
15天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
40 4
|
16天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
56 4
|
23天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
14 2
|
28天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
54 5
|
27天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
21 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
105 0
Java面试题之cpu占用率100%,进行定位和解决

热门文章

最新文章