日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

反射、对象拷贝、异常常见问题总结

發(fā)布時(shí)間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射、对象拷贝、异常常见问题总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

反射、對(duì)象拷貝、異常常見問題總結(jié)


目錄

反射:
  • 什么是反射?
  • 什么是 java 序列化?什么情況下需要序列化?
  • 動(dòng)態(tài)代理是什么?有哪些應(yīng)用?
  • 怎么實(shí)現(xiàn)動(dòng)態(tài)代理?
  • 對(duì)象拷貝
  • 為什么要使用克隆?
  • 如何實(shí)現(xiàn)對(duì)象克隆?
  • 深拷貝和淺拷貝的區(qū)別是什么?
  • 異常
  • throw 和 throws 的區(qū)別?
  • final、finally、finalize 有什么區(qū)別?
  • try-catch-finally 中哪個(gè)部分可以省略?
  • try-catch-finally 中,如果 catch 中 return 了,finally 還會(huì)執(zhí)行么?
  • 常見的異常類有哪些?

  • 1. 什么是反射?

    反射是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為 Java 語(yǔ)言的反射機(jī)制。


    2. 什么是 java 序列化?什么情況下需要序列化?

    Java 序列化是為了保存各種對(duì)象在內(nèi)存中的狀態(tài),并且可以把保存的對(duì)象狀態(tài)再讀取出來。

    以下情況?使用 Java 序列化:

    • 想把內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫(kù)中。
    • 想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候
    • 想通過 RMI(遠(yuǎn)程調(diào)用方法)傳輸對(duì)象的時(shí)候。

    3. 動(dòng)態(tài)代理是什么?有哪些應(yīng)用?

    動(dòng)態(tài)代理是運(yùn)行時(shí)動(dòng)態(tài)生成代理類

    動(dòng)態(tài)代理的應(yīng)用有 spring aop,hibernate 數(shù)據(jù)查詢,測(cè)試框架的后端 mock、rpc、Java 注解對(duì)象獲取等。


    4. 怎么實(shí)現(xiàn)動(dòng)態(tài)代理?

    JDK 原生動(dòng)態(tài)代理和 cglib 動(dòng)態(tài)代理。JDK 原生動(dòng)態(tài)代理是基于接口實(shí)現(xiàn)的,而 cglib 是基于繼承當(dāng)前類的子類實(shí)現(xiàn)的。


    5. 為什么要使用克隆?

    克隆的對(duì)象可能包含一些已修改過的屬性,而 new 出來的對(duì)象的屬性還是初始化時(shí)候的值,所以當(dāng)需要一個(gè)新的對(duì)象來保存當(dāng)前對(duì)象的“狀態(tài)”就靠克隆方法了。


    6. 如何實(shí)現(xiàn)對(duì)象克隆?

    • 實(shí)現(xiàn) Cloneable 接口并重寫 Object 類中的 clone() 方法。
    • 實(shí)現(xiàn) Serializable 接口,通過對(duì)象的序列化和反序列化實(shí)現(xiàn)克隆,可以實(shí)現(xiàn)真正的深度克隆。

    7. 深拷貝和淺拷貝的區(qū)別是什么?

    • 淺拷貝:當(dāng)對(duì)象被復(fù)制時(shí)只復(fù)制它本身和其中包含的值類型的成員變量,而引用類型的成員對(duì)象并沒有復(fù)制
    • 深拷貝:除了對(duì)象本身被復(fù)制外,對(duì)象所包含的所有成員變量也將復(fù)制。

    8. throw 和 throws 的區(qū)別?

    • throw:是真實(shí)拋出一個(gè)異常。
    • throws:是聲明可能會(huì)拋出一個(gè)異常。

    9. final、finally、finalize 有什么區(qū)別?

    • final:是修飾符,如果修飾類,此類不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能被改變,只能使用。
    • finally:是 try{} catch{} finally{} 最后一部分,表示不論發(fā)送任何情況都會(huì)執(zhí)行,finally 部分可以省略,但如果 finally 部分存在,則一定會(huì)執(zhí)行 finally 里面的代碼。
    • finalize:是 Object 類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法。

    10. try-catch-finally 中哪個(gè)部分可以省略?

    try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同時(shí)省略,也就是說 try 的時(shí)候,必須后面跟一個(gè) catch 或者 finally。


    11. try-catch-finally 中,如果 catch 中 return 了,finally 還會(huì)執(zhí)行么?

    finally 一定會(huì)執(zhí)行,即使是 catch 中 return 了,catch 中的 return 會(huì)等 finally 中的代碼執(zhí)行完之后,才會(huì)執(zhí)行。


    12. 常見的異常類有哪些?

    • NullPointerException 空指針異常
    • CalssNotFoundException 指定類不存在
    • NumberFormatException 字符串轉(zhuǎn)換為數(shù)字異常
    • IndexOutOfBoundsException 數(shù)組下標(biāo)越界異常
    • ClassCastException 數(shù)據(jù)類型轉(zhuǎn)換異常
    • FileNotFoundException 文件未找到異常
    • NoSuchMethodException 方法不存在異常
    • IOException IO 異常
    • SocketException Socket異常

    總結(jié)

    以上是生活随笔為你收集整理的反射、对象拷贝、异常常见问题总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。