hadoop学习序曲之java基础篇--java内部类 异常

1:object类中的方法
        boolean equals(Object obj)
            :比较两个对象是否相等,默认是比较内存地址值,这个意义不大,
                所以在工作中如果需要对对象进行比较的话,一般会重写此方法,实现自己的比较逻辑。
        String toString()
            :默认会打印对象的名称和内存地址值,但是打印这个意义不是很大,
                所以工作中一般会进行覆盖,在这个方法中把对象的基本属性信息给打印出去
        Class getClass()
            :获取当前对象的字节码文件对象,然后根据这个对象就可以获取字节码中保存的类的名称等信息
                getName和getSimpleName

        int hashCode()
            :返回的是对象在内存中的地址值


2:内部类
    格式:

    class Outer//外部
    {
        private int num;
        class Inter//内部类,可以在成员位置
        {
            show(){

            }
        }

        public void method(){
            Inter inter = new Inter();
            inter.show();
        }

    }

    特点:
        1:内部类可以使用外部类中的所有属性,包括私有的
        2:如果外部类向访问内部类中的成员的话,默认情况下是需要创建内部类对象的

    什么时候需要定义内部类呢?
    假设A类可以随意访问B类中的属性,但是B类在访问A类中的属性的时候,需要创建A类的对象,才能调用
    class B{
        class A{

        }
    }

    class Body{//身体

        priavte class Heart{//心脏

        }

        public Heart method(){
            if(是医生){
            return new Heart();
            }
            return null;//Heart h = null;
        }
    }


    如何在main函数中获取内部类对象(前提条件:内部类没有私有化)

    //外部类名.内部类名 变量名 = 外部类对象.内部类对象
    //内部类和函数都是普通的
    //Outer.Inter io = new Outer().new Inter();
    //io.show();

    //如果内部类是静态的时候
    //Outer.Inter io1 = new Outer.Inter();
    //io1.show();

    //如果内部类和调用的函数都是静态
    Outer.Inter.show();

    注意:
        如果内部类中有静态成员,那么这个内部类也需要静态。
        如果内部类中的函数是静态的,那么在这个函数内部就只能调用外部类的静态成员了。



    内部类也可以放在函数内部
    在这个位置的时候,需要注意:如果这个局部内部类访问到了函数的局部变量的时候,这个局部变量必须是final类型的。

异常的体系
Throwable
     Error
     Exception

getMessage()
获取异常信息,返回字符串。
toString()
获取异常类名和异常信息,返回字符串。
printStackTrace()
获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。 

异常第一种处理方式
try
{
    需要检测的代码;
}
catch(异常类  变量)
{
    异常处理代码;
}
finally
{
    一定会执行的代码;    
}

异常第二种处理方式
在函数上使用throws抛出
注意:抛出之后如果这个函数还被其他函数所调用了,那么还需要使用这两种异常处理方式中的某一个来处理。
处理异常,要么throws 要么try,到底是try好呢?还是throws好呢?
原则:如果该功能内部可以将问题处理,用try,如果处理不了,交给调用者处理,这时用throws。

编译时异常和运行时异常

自定义类继承Exception或者其子类。(自定义一个负数异常)
通过构造函数定义异常信息。
例:
Class DemoException extends Exception
{
    DemoException(String message)
    {
        super(message);
    }
}
通过throw将自定义异常抛出。

  throws和throw
throws用于标识函数暴露出的异常。
throw用于抛出异常对象。
throws与throw的区别:
thorws用在函数上,后面跟异常类名。
throw用在函数内,后面跟异常对象。

finally代码块
finally多用于关闭资源的代码
表示总是执行的代码
多用于关闭资源连接
Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

异常细节
RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。
一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。
如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。
当try对应多个catch时,如果catch的异常类型有继承关系,那么父类型的catch一定在下面。 

你可能感兴趣的:(hadoop学习序曲之java基础篇--java内部类 异常)