一.总结String、Object、包装类的常用方法以及注意点:
https://blog.csdn.net/Soldier49Zed/article/details/84190793
二.要求:
- Person类有name,age,salary属性,要求实现至少两个构造方法,并且属性私有,提供对应的getter、setter。
- 覆写toString方法,要求在System.out.println()函数中传递Person对象能打印出三个属性值而不是对象地址。
- 覆写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();
}
}
五.编程
- 定义一个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
- 定义一个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));
}
}