java之记录面试题

error和exception的 区别?

Error(错误)
表示系统级的错误和程序不必处理的异常,是.net运行环境中的内部错误或者硬件问题,
比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。

Exception(异常)
表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵
而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

编写一个线程安全的单例模式?

package DevisePattern;

public class MySingleton {
    private static MySingleton mySingle;

    private MySingleton() {

    }

    public static MySingleton getInstance() {
        if (mySingle == null) {
            synchronized (MySingleton.class) {
                mySingle = new MySingleton();
            }
        }
        return mySingle;
    }
}

编译时异常和运行时异常的区别?

java异常可分为3种:

  (1)编译时异常:Java.lang.Exception

  (2)运行期异常:Java.lang.RuntimeException

  (3)错误:Java.lang.Error

Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;
Java.lang.RuntimeException继承自Java.lang.Exception.
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题—-程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范…..这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。

错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。

顺便说一下:编译期和运行期的区别

编译期和运行期进行的操作是不相同的,编译器只是进行语法的分析,分析出来的错误也只是语法上的错误,而运行期在真正在分配内存··

比如说你写一个while循环,一直往栈里写,编译器是不会出错的,可是运行期就会出现栈满的错误··

如果两个对象equals()相等,那么hashcode也不一定相等?

1.两个对象equals相等那么hashcode 是一定相等的。
2.两个对象equals不相等hashcode可能相等可以不相等。

String a=”abc”; 跟String a= new String (“abc”) 有什么区别?
String a=”abc” a 变量存在栈中,abc存在常量池中,有且只有一个,a的指针指向abc。再定义一个String s=”abc”;这两个对象引用的常量池地址都是同一个,
String a= new String (“abc”) ;a 变量存在栈中,abc 存在堆中,a的指针指向abc。再定义一个String s= new String (“abc”) ; a!=s,因为a和s所指的内存空间不同。
记住了:这两种方式都是2个object对象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章