JAVA基礎--面試用

 

一、java中類名+方法名(){}

是普通方法的構造,是有返回值的,返回值是你的類名的對象.html

 

 

(類方法==通常方法)java

1.1 java中建立對象 類名 對象名=new 類名(); 後面的()什麼意思

 
類名 對象名=new 類名();
類名 對象名 這個的解釋是建立名稱爲「對象名」的「類名」類引用變量
new ; 這個的解釋是實例化對象
類名() 這個的解釋是無參數構造方法;
new 類名();就是說以無參數構造方法實例化對象;
類名 對象名=new 類名();用指針的解釋就是以無參數構造方法實例化對象並將這個對象的內存引用賦給「類名」類的「對象名」引用變量


 二、this關鍵字設計模式

例如:this.name=name;數組

當成員變量和局部變量重名,能夠用this進行區分,this訪問成員變量;緩存

左邊的name是對象的name,右邊的name是局部變量,局部變量賦值給了對象的,就是賦值給了堆內存;多線程

簡單說:哪一個對象調用了this所在的函數,this就表明了哪一個對象;dom

方法中用了本類對象,全用this替代;函數

 

static關鍵字工具

static關鍵字的特色?post

 成員變量和靜態變量的不一樣?

 

 

靜態方法的注意事項:

1.靜態方法只能訪問靜態成員;(非靜態既能夠訪問靜態,又能夠訪問非靜態)

2.靜態方法中不可使用this和super關鍵字;

3.主函數是靜態的;

 

靜態方法何時使用?

 靜態代碼塊:  隨着類的加載而執行,並且只執行一次;做用:用於給類進行初始化;

 

 

主函數解析:

 

 

 

 

 

 

 

 

三、繼承

java不支持多繼承,可是支持多層繼承;C繼承B,B繼承A;

 

何時應用覆蓋操做?

 

子類實例化過程;

 

 四、final -----修飾符

五、抽象類

類的實例化就是能夠拿類來new一個對象;

 

 六、接口

當一個抽象類中的方法所有都是抽象的的時候,能夠用藉口的形式去定義和表示;

 

實現implements

類與類之間是繼承關係,類與接口直接是實現關係;

 接口不能夠實例化。只能由實現了接口的子類並覆蓋了接口中全部的抽象方法後,改子類才能夠去實例化。

 

 多實現:一個類能夠實現多個接口;

 一個類在繼承另外一個類的同時,還能夠實現多個接口;

 接口的特色:

接口和抽象類的區別:

 

舉例:

七、多態

對象的多態

代碼舉例:

父類的對象a不斷指向父類的不一樣子類對象,就是多態的一種體現;

 多態的轉型

注意:對於轉型,自始自終都是子類對象在作着類型變化。

向上轉型目的是爲了限制對特有功能的訪問;

向下轉型目的是爲了使用子類中的特有方法;

多態成員的特色

 

八、封裝

封裝的好處:

 

 九、構造函數

構造函數:構建建立對象時調用的函數;

 

構造函數與通常函數的區別?

 什麼是構造函數的重載?

函數名稱相同,參數列表不一致;

 

 十、多線程

線程就是進程中的一個負責程序執行的控制單元(執行路徑);

一個進程中能夠有多個執行路徑,稱之爲多線程;

 

如何建立多線程?

 1.繼承Thread類---線程類

 12步驟

34步驟

 

 

 二、第二種建立線程的方式----實現Runnable接口;(使用的更加普遍)

步驟:

 12步驟

 

34步驟

 

好處:

 

多線程---同步代碼塊;

synchronized---同步的

 

 

 同步的好處和弊端是?

多線程-----死鎖;

產生死鎖的條件:

①一個資源只能被一個進程鎖佔用,直到被該進程鎖釋放;

②一個進程因請求被佔用資源而發生阻塞時,對已獲資源保持不放;

③任何一個資源在沒被該進程釋放以前,任何其餘資源都沒法對他佔用;

避免死鎖:

  1. 加鎖順序
  2. 加鎖時限
  3. 死鎖檢測

 多線程---等待喚醒機制;

涉及的方法有:

1.wait():讓線程處於凍結狀態,被wait的線程會被存儲到線程池中。

2.notify():喚醒線程池中一個線程(任意);

3.notifyAll():喚醒線程池中全部線程;

這些方法都必須定義到同步中,由於這些方法是用於操做線程狀態的方法,必需要明確到底操做的是哪一個鎖上的線程。

爲何操做線程的方法wait,notify,notifyAll()定義在了object類中?

由於這些方法是監視器的方法,監視器其實就是鎖,鎖能夠是任意的對象,任意的對象調用的方式必定定義在object類中;

 

生產者+消費者

多個生產者+多個消費者

notifyAll():解決喚醒對方的辦法,

while判斷標記,解決了線程獲取執行權後,是否要運行,

 

wait()和slee()的區別?

1.wait能夠指定時間也能夠不指定時間;

 sleep必須指定時間;

2.在同步中時,對cpu的執行權和鎖的處理不一樣;

 wait:釋放執行權,釋放鎖;

 sleep:釋放執行權,不釋放鎖;

 

中止線程:

怎麼控制線程的任務結束呢?

任務中都會有循環結構,只要控制住循環就能夠結束任務,控制循環一般就用定義標記來完成;

 

若是線程處於凍結狀態,沒法讀取標記,該如何結束線程呢?

可使用interrupted()方法將線程從凍結狀態強制恢復到運行狀態中來,讓線程具有cpu的執行資格;當時強制動做會發生了interruptedException,記得要處理

 

setDaemon():守護線程

join():臨時加入一個線程,優先去執行;

 

十一、數組+內存劃分

1.寄存器

2.本地方法區

3.方法區

4.棧內存

  存儲的都是局部變量;並且變量所屬的做用域一旦結束,該變量就自動釋放;

5.堆內存

  存儲的是對象(凡是new創建的都在堆中)

 

十二、內部類

細節:

內部類能夠存放在局部位置;

內部類在局部位置上只能訪問局部中被final修飾的局部變量;

 

 何時使用內部類?

 

匿名內部類(內部類的簡寫格式)的書寫前提?

內部類必須繼承或者實現一個外部類或接口;

實質:就是一個匿名子類對象;

格式:new 父類or接口(){子類內容}

 

 匿名內部類細節:

 

1三、泛型

 

 

 什麼是泛型方法?

 

這樣作的好處就是,傳入的值是自定義類型的,不受約束;

 

什麼是泛型接口?

 

什麼是泛型通配符?

何時使用泛型的上限呢?

通常在存儲元素的時候都是用上限;

何時使用泛型的下限呢?

一般對集合中的元素進行取出操做時。

 

 

13.object類

 equals方法

hashcode方法

getclass方法

tostring方法

 

14.單例設計模式

解決的問題:就是能夠保證一個類在內存中的對象惟一性;

 如何進行單例模式設計?

例如:

 

15.工具類collection排序

 

16.異常

什麼是異常捕捉?

 異常捕捉的原則?

finally代碼塊的做用?

一般用於釋放和關閉資源,它是必定會被執行的代碼塊;

關於異常的一些注意事項?

 17.vector集合

     Linkedlist集合

 18.string類

細節,爲什麼下圖的s==s1爲false?

 

string類有什麼自帶的功能?

string類中的轉換操做是怎樣的?

 string類中判斷功能?

string類中比較功能?

compare to() 方法,前者比後者小(實際上是ASCII碼的比較),返回一個小於0的值,反之,返回一個大於0的值,若二者相等,則返回值爲0;

 

string類的intern方法?

對字符串池進行操做;

 

string類的排序?

字符串對象如何進行比較;

一個字串在整串中出現的次數;

兩個字符串中最大相同的子串;

如何去除字符串兩端空白?

 

1九、IO流

什麼是IO流?

IO流的基類?

 

FileWriter 建立一個文件,寫入字符數據;

FileReader 讀取一個文件中的字符數據;

文本複製的2種方式(連讀帶寫);

圖解文本複製:

什麼是緩衝區?

BufferedReader

BufferedWriter:爲了提升寫入效率;

 

readline()方法的原理?

使用了讀取緩衝區的read方法,將讀取的字符進行緩衝並判斷換行標記,將標記錢的緩存數據變成字符串返回 

 

什麼是裝飾設計模式?

對一組對象的功能進行加強,就可使用該模式進行問題的解決;

裝飾設計模式相比繼承的優勢?

流體系進行功能擴展,有多了流對象,若是要提升流要提升效率,繼承只會致使體系愈來愈臃腫,不靈活,因此選擇

裝飾設計模式;

 

字節流如何操做文件?

 複製mp3文件;

鍵盤錄入的讀取;

 

什麼是轉換流?

InputStreamReader()-----字節流轉換成字符流,編碼

OutputStream()-----標準輸出流

OutputStreamWriter()-----字符流轉換成字節流,解碼

 

流的操做規律?

 

 

 什麼是File類?

 

File類如何獲取、建立和刪除信息文件信息?

 過濾器是什麼?

過濾器工做原理圖?

什麼是遞歸?

函數自身調用自身;

如何刪除目錄?

原理:從最裏面往外面刪除;

 

什麼是properties集合?

基本功能:

list()方法;

store()方法----持久化存儲;

 

什麼是打印流?

PrintWriter()----打印字節;

PrintStream()-----打印字符(操做文件);

1.提供了打印方法,能夠對多種數據類型進行打印,而且保持數據的表示形式;

2.不拋出IOException

 

什麼是序列流?

·SequenceInputStream()---對多個流進行 合併;

怎麼實現文件切割器?

1.用讀取流關聯源文件

2.定義一個1M的緩衝區;

3.建立目的;

 

如何進行對象序列化?

ObjectInputStream與ObjectOutputStream

接口類須要繼承serializable類,來標記接口,

serializable()的做用是什麼?

用於給序列化的類加入ID號,用於判斷類和對象是不是同一個版本;

 

transient關鍵字的做用?

非靜態數據不想被序列化可使用這個關鍵字修飾;

 

RandomAccessFile類的做用?

什麼是管道流?

PipedStream類

什麼是基本類型數據流?

DataStream類

什麼是操做數組的流?

ByteArrayOutputStream類

相關文章
相關標籤/搜索