equals和==的区别,final和finally,Object中的常见的方法

equals和==的区别
equals用来比较的是两个对象的内容是否相等
"=="只是比较引用(对象的地址)。

  如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object类的equals方法的实现代码如下:
     boolean equals(Object  o){
     return  this==o;
}
     这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

final和finally
final:java中的关键字,修饰符。
finally:java的一种异常处理机制。

1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被声明为absrtact抽象类的和final的类。
2.如果将变量或者方法声明为final,可以保证它们在使用中不被改变.
    2.1 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
    2.2被声明final的方法只能使用,不能重载。

Object中的常见的方法
1.clone()
创建并返回此对象的一个副本。
2.equals()
对象相等判断方法
3.finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
4.getclass()
返回此 Object 的运行时类。
5.hashcode()
  返回该对象的哈希码值。
6.notify()
唤醒在此对象监视器上等待的单个线程。
7.notifyAll()
唤醒在此对象监视器上等待的所有线程。
8.toString()
返回该对象的字符串表示。
9.wait()

Java的异常类层次结构

1. runtimeException子类:

    1、 java.lang.ArrayIndexOutOfBoundsException
    数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
    2、java.lang.ArithmeticException
    算术条件异常。譬如:整数除零等。
    3、java.lang.NullPointerException
    空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等
    4、java.lang.ClassNotFoundException
    找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
   5、java.lang.NegativeArraySizeException  数组长度为负异常
   6、java.lang.ArrayStoreException 数组中包含不兼容的值抛出的异常
   7、java.lang.SecurityException 安全性异常
   8、java.lang.IllegalArgumentException 非法参数异常

2.IOException
IOException:操作输入流和输出流时可能出现的异常。
EOFException   文件已结束异常
FileNotFoundException   文件未找到异常

3. 其他
ClassCastException    类型转换异常类
ArrayStoreException  数组中包含不兼容的值抛出的异常
SQLException   操作数据库异常类
NoSuchFieldException   字段未找到异常
NoSuchMethodException   方法未找到抛出的异常
NumberFormatException    字符串转换为数字抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IllegalAccessException  不允许访问某类异常
InstantiationException  当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常

对JDK8的新特性有什么了解
Lambda表达式和函数式接口
接口的默认方法和静态方法
Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法
方法引用
重复注解
更好的类型推断
Date API
拓宽注解的应用场景
函数式接口

猜你喜欢

转载自572327713.iteye.com/blog/2405677