Java基礎知識(六)

Java基礎知識(六)

51. 在 Java 語言,怎麼理解 goto

goto 這個詞是 C 語言中的,goto 語句通常與條件語句配合使用,可用來實現條件轉移,構成循
環,跳出循環體等功能。而在結構化程序語言中一般不主張使用 goto 語句, 以免造成程序流程的
混亂,使理解和調試程序都產生困難。但是在 java 語言中,goto 這個詞只是作爲了保留字,不推薦
使用,因爲 java 語言講究簡單,方便

52. 請描述一下 Java 5 有哪些新特性

1、泛型
2、For-Each 循環
3、自動裝包/拆包
4、枚舉
5、靜態導入
6、Annotation(框架配置,代碼生成 的里程
7、可變參數
8、字符串格式化器(java.util.Formatter)
9、新的線程模型和併發庫 Thread Frameword

53. Java 6 新特性有哪些。

1、引入了一個支持腳本引擎的新框架
2、UI 的增強
3、對 WebService 支持的增強(JAX-WS2.0 和 JAXB2.0)
4、一系列新的安全相關的增強
5、JDBC4.0
6、Compiler API
7、通用的 Annotations 支持

54. Java 7 新特性有哪些

1.switch 中可以使用字串了
2.運用 List tempList = new ArrayList<>(); 即泛型實例化類型自動推斷
3.語法上支持集合,而不一定是數組
4.新增一些讀取環境信息的工具方法
5.Boolean 類型反轉,空指針安全,參與位運算
6.兩個 char 間的 equals
7.安全的加減乘除
8.map 集合支持併發請求,且可以寫成 Map map = {name:“xxx”,age:18};

55. Java 8 新特性有哪些

1.Lambda 表達式 − Lambda 允許把函數作爲一個方法的參數,用更簡潔的語法實現以前複雜的
功能代碼
2.方法引用提供了非常有用的語法,可以直接引用已有 Java 類或對象(實例)的方法或構造器。
與 lambda 聯合使用,方法引用可以使語言的構造更緊湊簡潔,減少冗餘代碼。
3.接口中可以使用 default 關鍵字聲明一個默認實現方法。
4.新的編譯工具,如:Nashorn 引擎 jjs、 類依賴分析器 jdeps。
5.新添加的 Stream API(java.util.stream) 把真正的函數式編程風格引入到 Java 中。
6.加強對日期與時間的處理。
7.Optional 類用來解決空指針異常。
8.Java 8 提供了一個新的 Nashorn javascript 引擎,它允許我們在 JVM 上運行特定的 javascript 應
用。

56. 描述 Java 動態代理

代理模式是常用的 java 設計模式之一,java 中的代理實現主要有基於接口的 jdk 動態代理和
基於類的 cglib 動態代理,代理的特點就是會爲目標對象產生代理對象,從而在調用實際目標對象方
法時實現無侵入式的代碼擴展,比如一些框架中的攔截器機制、springAOP 面向切面機制都是基於
動態代理模式實現的,其次也可以更安全的保護目標對象。動態代理的目的主要就是爲了解決一些
安全性問題(不讓客戶直接調用目標對象的功能,而是相當於通過中介),其次就是可以在調用目
標功能方法之前、之後額外添加一些功能,比如日誌、事務等,並且還能阻止調用功目標功能,從
而實現權限控制等

57. 爲什麼要使用單例模式

1、避免在開發程序的時候,創建出一個類的多個實例(佔用空間,性能問題),所以使用單例
模式,保證該類只創建一個對象;
2、一般單例模式通常有兩種形式:它的構造函數爲 private 的,必須有一個靜態方法,靜態方
法返回自己的實例;實行形式有兩種,懶漢式和餓漢式;所謂的餓漢式就是在聲明實例的時候直接
初始化對象,而懶漢式是先聲明一個空對象,在靜態方法中實例化該對象並返回

//構造方法私有化,讓外界無法創建對象 
private Test() { 
} 
 //在當前類中聲明靜態對象,並提供公共靜態方法讓外界調用獲取對象 
 private static Test t; 
public static Test getInstance(){ 
    if(t==null){
        t=new Test(); 

  }  
    return t; 
}

58. Java 中有哪些常用排序方式,使用 Java 實現冒泡排序

排序主要用於將一組無需數據進行升序/降序排列,Java 中有很多種排序方法,如:冒泡排序,
選擇排序,插入排序,快速排序等,其中在大量數據無需數據中效率最高的屬於快速排序,比如實
際工作中如果需要對數據排序,我們可以藉助 JDK 中自帶的 Arrays.sort 方法,它內部採用了快速排
序,效率非常高,當然也可以自己實現。

冒泡排序代碼如下:
    import java.util.Arrays; public class BubbleSort { 
        public static void BubbleSort(int[] arr) {  
            int temp;//定義一個臨時變量 
        for(int i=0;i<arr.length-1;i++){ 
            //循環的輪數 
            for(int j=0;j<arr.length-i-1;j++){ 
                //從前往後循環比較,從第 1 個數往後依次比較 
                if(arr[j+1]<arr[j]){ 
                    //如果後面的數字小於前面的則交換  
                    temp = arr[j];
                    arr[j] = arr[j+1]; 
                    arr[j+1] = temp;
                } 
            }
        }
        }
        public static void main(String[] args) {
            int arr[] = new int[]{1,6,2,2,5}; 
            BubbleSort.BubbleSort(arr);
            System.out.println(Arrays.toString(arr)); 
        }
    } 

59. Java 中垃圾回收有什麼目的?什麼時候進行垃圾回收?

Java 語言中一個顯著的特點就是引入了垃圾回收機制(簡稱 GC),使 c 語言程序員最頭疼的內
存管理的問題迎刃而解,它使得 Java 程序員在編寫程序的時候不再需要考慮內存管理。由於有個垃
圾回收機制,Java 中的對象不再有“作用域”的概念,只有對象的引用纔有“作用域”。垃圾回收可以
有效的防止內存泄露,有效的使用空閒的內存。簡單的理解,就是當對象失去引用後,系統會在調

度的時間對它所佔用的內存進行回收。

60. 如何實現對象克隆

實現對象克隆有兩種方式:
1). 實現 Cloneable 接口並重寫 Object 類中的 clone()方法;
2). 實現 Serializable 接口,通過對象的序列化和反序列化實現克隆,可以實現真正的深度克隆。

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