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一定在下面。