【JavaSE】Java面向对象三大类以及异常处理(上)

一.总结String、Object、包装类的常用方法以及注意点:

https://blog.csdn.net/Soldier49Zed/article/details/84190793

二.要求:

  1. Person类有name,age,salary属性,要求实现至少两个构造方法,并且属性私有,提供对应的getter、setter。
  2. 覆写toString方法,要求在System.out.println()函数中传递Person对象能打印出三个属性值而不是对象地址。
  3. 覆写equals方法,要求两个Person类对象的值相同时返回true。
package www.bit.java;

//第二题
//        要求:
//        1).Person类有name,age,salary属性,要求实现至少两个构造方法,并且属性私有,提供对应的getter、setter。
//        2).覆写toString方法,要求在System.out.println()函数中传递Person对象能打印出三个属性值而不是对象地址。
//        3).覆写equals方法,要求两个Person类对象的值相同时返回true。
class Person{
    private String name;
    private Integer age;
    private Double salary;

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

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

    public Person(String name,Integer age,Double salary){
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public String toString() {
        return "姓名:" + name + ",年龄:" + age + ",薪资:" + salary;
    }

    public void print(){
        System.out.println(this);
    }

    @Override
    //覆写equals方法
    public boolean equals(Object obj) {
        //判断obj是不是Person类对象
        if(!(obj instanceof Person)){
            return false;
        }
        //判断传进来的是不是自己
        if(obj == this){
            return true;
        }
        //如果不是自己,就把Object向下转型,比较其中属性
        Person per = (Person) obj;
        return per.salary.equals(this.salary) && per.age.equals(this.age) && per.name.equals(this.name);
    }
}

public class Test{
    public static void main(String[] args) {
        Person per1 = new Person("侯祥",22,35.0);
        Person per2 = new Person("应铎",20,30.0);
        Person per3 = new Person("杨龙",21,25.0);
        Person per4 = new Person("侯祥",22,35.0);
        per4.print();
        System.out.println(per4.equals(per1));
        System.out.println(per4.equals(per2));
        System.out.println(per4.equals(per3));
    }
}

三.说出下列程序的执行结果,并说明原因:
Integer a = 55;
Integer b = 55;
System.out.println(a==b);
System.out.println(a==new Integer(55));
System.out.println(a.equals(new Integer(55)));
Integer c = 129;
Integer d = 129;
System.out.println(c==d);

package www.bit.java;

public class Test{
    public static void main(String[] args) {
        Integer a = 55;
        Integer b = 55;
        System.out.println(a==b);//指向同一个常量同一个地址,比较的是地址    true
        System.out.println(a == new Integer(55));//new Integer是新建了一个对象 所以比较的地址不同    false
        System.out.println(a.equals(new Integer(55)));//equals比较的是对象内容,  true
        Integer c = 129;
        Integer d = 129;
        System.out.println(c==d);//Integer的范围为-128~127,之间   true
    }
}

四.写出懒汉式单例模式
 

package www.bit.java

class Singleton{
    private static Singleton instance = new Singleton();
    private Singleton(){

    }
    public static Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
    public void print(){
        System.out.println("hello world");
    }
}
public class Test{
    public static void main(String[] args) {
        Singleton singleton = null;
        singleton = Singleton.getInstance();
        singleton.print();
    }
}

五.编程

  1. 定义一个MulException类继承Exception类,要求两数相乘等于100报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。
package www.bit.java;

class MulException extends Exception{
    public MulException(String str){
        super(str);
    }
}

public class Test{
    public static void main(String[] args) throws MulException {
        int i = 10;
        int j = 10;
        if(i*j == 100){
            throw new MulException("两数相乘不能等于100");
        }
    }
}

运行结果:

Exception in thread "main" www.bit.java.MulException: 两数相乘不能等于100

at www.bit.java.Test.main(Test.java:128)

进程已结束,退出代码1

  1. 定义一个DivException类继承RuntimeException类,要求两数相除等于2报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。
package www.bit.java;

class DivExpection extends RuntimeException{
    public DivExpection(String str){
        super(str);
    }
}
public class Test{
    public static void main(String[] args) throws DivExpection {
        int i = 8;
        int j = 4;
        if(i/j == 2){
            throw new DivExpection("两数相除不能等于2");
        }
    }
}

运行结果:

Exception in thread "main" www.bit.java.DivExpection: 两数相除不能等于2
at www.bit.java.Test.main(Test.java:144)

进程已结束,退出代码1

六.(算法)
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

//关系:第n天桃子总数 - 第n天吃掉的桃子(第n天桃子总数/2 +1) = 第n+1天桃子总数。

package www.bit.java;

public class Test{
    public static int Peach(int n){
        if(n == 10){
            return 1;
        }
        return Peach(n+1)*2+2;
    }
    public static void main(String[] args) {
        System.out.println(Peach(1));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值