Object 类

概述

JAVA类库中的类,JAva.lang 包中的:JAVA.lang.Object(类)

是所有引用类型的超类;(我们自定义的所有的类都是它的子类)

public class Hero extends Object

所有类都默认继承Object类

equals方法

即进行比较,判断两个对象中的所有的属性值是否相同。由Object类进行定义

Student stu1 = new Student(“王为”,10);

Student stu2 = new Student(“王为”,10);

stu1==stu2  //false



这个时候需要equals用来比较

public boolean equals(Object obj){
Student stu1 = new Student(“王为”,10);
Student stu2 = new Student(“王为”,10);
System.out.println(stu1.equals(stu2)  )//此时为false,默认实现比较地址是否相同并不能满足我们的要求
//相当于return this==obj
}

eclipse 快捷键 Shift+Alt+H 快速重写Object类成员方法equals方法 ;

此时equals比较的是stu1和stu2的值是否相同即为:true;

toString 方法

异常

概念

代码运行的非正常情况,JVM默认情况立即终止程序运行,JAVA中提供一种一场处理机制,的代码编写方式,监控一些可能出现异常的代码,出先异常的时候可以采取一下补救的措施,让程序健康运行下去!

例如:

public class A{

public static void main(String[] ages){

    Scanner sc=new Scanner (System.in);

    System.out.println("请输入一个数:");

    try{

    int n = sc.nextInt();

}catch(Input){

   

}

}

异常类型

|----Error(错误):程序狗带,不希望我们的程序捕获,我们的程序也无法处理!

|----Exception(异常):程序还有的救,程序停止运行。

处理异常的方式

1、JVM执行含有异常的代码

2、JVM识别出这个异常

3、JVM去类库中找到异常类,并创建这个异常的对象

4、JVM查看代码是否监控这个异常

5、没有监控就将异常打印到控制台

6、结束程序(这是我们不想要看到的)

try_catch异常处理

基本格式_可以嵌套

try{

try{//需要判断的异常}

catch(){}

catch(Exception e){}

catch(Exception e){

System.out.println("未知异常,请与系统管理员联系!");



说明:

对可能出现的异常代码进行捕获

可以多catch 无限个

编译时异常

除了运行时异常,其他的异常都是:无法通过判断语句判断出来的异常,例如:磁盘访问异常,网络访问异常。。。都归类为非运行时异常,这中异常在代码中必需处理,否则运行错误,这种异常也被称为编译期异常;

运行时异常

有些异常可以通过判断句避免,例如: 空指针异常,数组下标越界异常,算术运算符异常。。。

这种异常并不强制代码必须监控处理。

Throwable:表示告诉JVM如果方法中出现这异常,请将这个异常抛给调用者!

1、public String getMessage(){

    //获取:异常信息

};

2、public String toString(){

    //获取:异常类名+异常信息

3、public void printStackTrace(){

    //向控制台打印异常信息

调试程序有用

throws

public void show()throws 异常名1,异常名2,。。。{


异常面试题

public static void main(String[] args) {
		int n = getNum();
		System.out.println(n);//40
	}
	private static int getNum() {
		int num = 10;
		try{
			num = 20;
			return num;//1.将num的值(20)复制副本存储起来;2.执行finally3.将之前复制的副本20返回。
		}catch(Exception e){
			num = 30;
			return num;
		}finally{
			System.out.println("finally...");
			num = 40;
		}
	}

最后输出n的值为:40;

自定义异常

       1).根据自己的业务逻辑:不符合业务逻辑的,我们就可以制作一个异常类,表示这种异常情况。

              例如:

classStudent{
                     privateint age;
                     publicvoid setAge(int age){
                            if(age < 15 || age >50){
                                   //抛出异常
                                   thrownew 自定义异常();
                            }
                            this.age= age;
                     }
              }



自定义异常的实现

   

publicclass AgeException extends Exception{
       publicAgeException(String msg){
             super(msg);
       }
}
    //B).使用自定义异常:
    publicclass Student {
    privateint age;
    publicvoid setAge(int age) throws AgeException{
              if(age< 15 || age > 50){
                     thrownew AgeException("年龄必须是15--50岁之间!");
              }
              this.age= age;
       }
       publicint getAge(){
             returnthis.age;
       }
}
     //C).调用“使用自定义异常”的方法:
              publicstatic void main(String[] args) {
              Studentstu = new Student();
              try{
                     stu.setAge(12);
              }catch (AgeException e) {
                     System.out.println("异常信息:" + e.getMessage());
                     e.printStackTrace();
              }
              System.out.println(stu.getAge());
       }

子类重写父类方法时的异常声明

public Fu {
              publicvoid show() throws IOException{
              }
       }
       classZi extends Fu{
              public void show() throws IOException{
              }
       }

       A).父类方法没有抛出任何异常,子类可以:

              1).不抛出任何异常;

              2).可以抛出任何的“运行时异常”。

              3).子类不能抛出任何的“非运行时异常”。

       B).父类方法抛出了“运行时异常”,子类可以:

              1).不抛出任何异常;

              2).可以抛出任何的“运行时异常”。

              3).子类不能抛出任何的“非运行时异常”.

       C).父类方法抛出了“非运行时异常”,子类可以:

              1).不抛出任何异常;

              2).可以抛出任何的“运行时异常”。

              3).最多只能抛出跟父类相同(或者父类异常的子类)的非运行时异常,不能抛出比父类更多

                 的非运行时异常。

       总结一句话:无论父类是否抛出异常,子类:

              1).可以不抛出任何异常;

              2).可以抛出任何的运行时异常;

              3).不能抛出比父类大,或者跟父类不同的“非运行时异常”。