反射、对象拷贝、异常常见问题总结
生活随笔
收集整理的這篇文章主要介紹了
反射、对象拷贝、异常常见问题总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
反射、對象拷貝、異常常見問題總結
目錄
反射:
對象拷貝
異常
1. 什么是反射?
反射是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為 Java 語言的反射機制。
2. 什么是 java 序列化?什么情況下需要序列化?
Java 序列化是為了保存各種對象在內存中的狀態,并且可以把保存的對象狀態再讀取出來。
以下情況?使用 Java 序列化:
- 想把內存中的對象狀態保存到一個文件中或者數據庫中。
- 想用套接字在網絡上傳送對象的時候
- 想通過 RMI(遠程調用方法)傳輸對象的時候。
3. 動態代理是什么?有哪些應用?
動態代理是運行時動態生成代理類
動態代理的應用有 spring aop,hibernate 數據查詢,測試框架的后端 mock、rpc、Java 注解對象獲取等。
4. 怎么實現動態代理?
JDK 原生動態代理和 cglib 動態代理。JDK 原生動態代理是基于接口實現的,而 cglib 是基于繼承當前類的子類實現的。
5. 為什么要使用克隆?
克隆的對象可能包含一些已修改過的屬性,而 new 出來的對象的屬性還是初始化時候的值,所以當需要一個新的對象來保存當前對象的“狀態”就靠克隆方法了。
6. 如何實現對象克隆?
- 實現 Cloneable 接口并重寫 Object 類中的 clone() 方法。
- 實現 Serializable 接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆。
7. 深拷貝和淺拷貝的區別是什么?
- 淺拷貝:當對象被復制時只復制它本身和其中包含的值類型的成員變量,而引用類型的成員對象并沒有復制
- 深拷貝:除了對象本身被復制外,對象所包含的所有成員變量也將復制。
8. throw 和 throws 的區別?
- throw:是真實拋出一個異常。
- throws:是聲明可能會拋出一個異常。
9. final、finally、finalize 有什么區別?
- final:是修飾符,如果修飾類,此類不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能被改變,只能使用。
- finally:是 try{} catch{} finally{} 最后一部分,表示不論發送任何情況都會執行,finally 部分可以省略,但如果 finally 部分存在,則一定會執行 finally 里面的代碼。
- finalize:是 Object 類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法。
10. try-catch-finally 中哪個部分可以省略?
try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同時省略,也就是說 try 的時候,必須后面跟一個 catch 或者 finally。
11. try-catch-finally 中,如果 catch 中 return 了,finally 還會執行么?
finally 一定會執行,即使是 catch 中 return 了,catch 中的 return 會等 finally 中的代碼執行完之后,才會執行。
12. 常見的異常類有哪些?
- NullPointerException 空指針異常
- CalssNotFoundException 指定類不存在
- NumberFormatException 字符串轉換為數字異常
- IndexOutOfBoundsException 數組下標越界異常
- ClassCastException 數據類型轉換異常
- FileNotFoundException 文件未找到異常
- NoSuchMethodException 方法不存在異常
- IOException IO 異常
- SocketException Socket異常
總結
以上是生活随笔為你收集整理的反射、对象拷贝、异常常见问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络知识点补充
- 下一篇: 多线程常见问题总结