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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 安卓基础面试题_android-------Java 常问的基础面试题

發(fā)布時間:2025/3/19 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 安卓基础面试题_android-------Java 常问的基础面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、"=="和equals方法究竟有什么區(qū)別?

==操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個引用變量是否相等,只能用==操作符。

equals方法是用于比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。

2、訪問修飾符public,private,protected,以及不寫(默認)時的區(qū)別?

區(qū)別如下:

作用域? ? 當前類? 同包 子類 其他

public ? ? ? ?√ ? ? ? ?√ ? ? ? √ ? ? ?√

protected ?√ ? ? ? ?√ ? ? ? √ ? ? ?×

default ? ? ? √ ? ? ??√ ? ? ? × ? ? ?×

private ? ? ? √ ? ? ? ?× ? ? ?× ? ? ?×

類的成員不寫訪問修飾時默認為default。默認對于同一個包中的其他類相當于公開(public),對于不是同一個包中的其他類相當于私有(private)。受保護(protected)對子類相當于公開,對不是同一包中的沒有父子關系的類相當于私有。

3、String 是最基本的數據類型嗎?

不是。Java中的基本數據類型只有8個:byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type)和枚舉類型(enumeration type),剩下的都是引用類型(reference type)。

4、解釋內存中的棧(stack)、堆(heap)和靜態(tài)存儲區(qū)的用法。

通常我們定義一個基本數據類型的變量,一個對象的引用,還有就是函數調用的現場保存都使用內存中的棧空間;而通過new關鍵字和構造器創(chuàng)建的對象放在堆空間;程序中的字面量(literal)如直接書寫的100、“hello”和常量都是放在靜態(tài)存儲區(qū)中。棧空間操作最快但是也很小,通常大量的對象都是放在堆空間,整個內存包括硬盤上的虛擬內存都可以被當成堆空間來使用。

String str = new String(“hello”);

上面的語句中str放在棧上,用new創(chuàng)建出來的字符串對象放在堆上,而“hello”這個字面量放在靜態(tài)存儲區(qū)。

補充:較新版本的Java中使用了一項叫“逃逸分析“的技術,可以將一些局部對象放在棧上以提升對象的操作性能。

5、簡述如下關鍵字用途try、catch、throw、throws、finally

try:保護代碼,如果try中某行代碼出現異常,則try中代碼不再繼續(xù)執(zhí)行。 b) catch:捕獲異常,當try中出現異常,則catch負責捕獲異常,并處理。

throw:拋出異常。

throws:聲明異常。

finally:無論try中是否出現異常,finally一定執(zhí)行。

6、LinkedList和ArrayList區(qū)別?

ArrayList和LinkedList兩者都實現了List接口,但是它們之間有些不同。

(1)ArrayList是由Array所支持的基于一個索引的數據結構,所以它提供對元素的隨機訪問,復雜度為O(1),但LinkedList存儲一系列的節(jié)點數據,每個節(jié)點都與前一個和下一個節(jié)點相連接。所以,盡管有使用索引獲取元素的方法,內部實現是從起始點開始遍歷,遍歷到索引的節(jié)點然后返回元素,時間復雜度為O(n),比ArrayList要慢。

(2)與ArrayList相比,在LinkedList中插入、添加和刪除一個元素會更快,因為在一個元素被插入到中間的時候,不會涉及改變數組的大小,或更新索引。

(3)LinkedList比ArrayList消耗更多的內存,因為LinkedList中的每個節(jié)點存儲了前后節(jié)點的引用。

7、面向對象的特征有哪些方面?

面向對象的特征主要有以下幾個方面:

1)抽象:抽象是將一類對象的共同特征總結出來構造類的過程,包括數據抽象和行為抽象兩方面。抽象只關注對象有哪些屬性和行為,并不關注這些行為的細節(jié)是什么。

2)繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程。提供繼承信息的類被稱為父類(超類、基類);得到繼承信息的類被稱為子類(派生類)。繼承讓變化中的軟件系統(tǒng)有了一定的延續(xù)性,同時繼承也是封裝程序中可變因素的重要手段(如果不能理解請閱讀閻宏博士的《Java與模式》或《設計模式精解》中關于橋梁模式的部分)。

3)封裝:通常認為封裝是把數據和操作數據的方法綁定起來,對數據的訪問只能通過已定義的接口。面向對象的本質就是將現實世界描繪成一系列完全自治、封閉的對象。我們在類中編寫的方法就是對實現細節(jié)的一種封裝;我們編寫一個類就是對數據和數據操作的封裝。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口(可以想想普通洗衣機和全自動洗衣機的差別,明顯全自動洗衣機封裝更好因此操作起來更簡單;我們現在使用的智能手機也是封裝得足夠好的,因為幾個按鍵就搞定了所有的事情)。

4)多態(tài)性:多態(tài)性是指允許不同子類型的對象對同一消息作出不同的響應。簡單的說就是用同樣的對象引用調用同樣的方法但是做了不同的事情。多態(tài)性分為編譯時的多態(tài)性和運行時的多態(tài)性。如果將對象的方法視為對象向外界提供的服務,那么運行時的多態(tài)性可以解釋為:當A系統(tǒng)訪問B系統(tǒng)提供的服務時,B系統(tǒng)有多種提供服務的方式,但一切對A系統(tǒng)來說都是透明的(就像電動剃須刀是A系統(tǒng),它的供電系統(tǒng)是B系統(tǒng),B系統(tǒng)可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統(tǒng)只會通過B類對象調用供電的方法,但并不知道供電系統(tǒng)的底層實現是什么,究竟通過何種方式獲得了動力)。方法重載(overload)實現的是編譯時的多態(tài)性(也稱為前綁定),而方法重寫(override)實現的是運行時的多態(tài)性(也稱為后綁定)。運行時的多態(tài)是面向對象最精髓的東西,要實現多態(tài)需要做兩件事:1. 方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);2. 對象造型(用父類型引用引用子類型對象,這樣同樣的引用調用同樣的方法就會根據子類對象的不同而表現出不同的行為)。

8、String 和StringBuilder、StringBuffer 的區(qū)別?

共同點:String StringBuffer StringBuilder 都是字符串相關函數,StringBuffer StringBuilder都是AbstractStringBuilder的子類

不同點:

String內容不可變,StringBuffer StringBuilder內容可變

String與StringBuffer線程安全,StringBuilder非線程安全

如果程序不是多線程的,那么使用StringBuilder效率高于StringBuffer

9、重載(Overload)和重寫(Override)的區(qū)別。重載的方法能否根據返回類型進行區(qū)分?

方法的重載和重寫都是實現多態(tài)的方式,區(qū)別在于前者實現的是編譯時的多態(tài)性,而后者實現的是運行時的多態(tài)性。重載發(fā)生在一個類中,同名的方法如果有不同的參數列表(參數類型不同、參數個數不同或者二者都不同)則視為重載;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。重載對返回類型沒有特殊的要求。

10、抽象類(abstract class)和接口(interface)有什么異同?

抽象類和接口都不能夠實例化,但可以定義抽象類和接口類型的引用。一個類如果繼承了某個抽象類或者實現了某個接口都需要對其中的抽象方法全部進行實現,否則該類仍然需要被聲明為抽象類。接口比抽象類更加抽象,因為抽象類中可以定義構造器,可以有抽象方法和具體方法,而接口中不能定義構造器而且其中的方法全部都是抽象方法。抽象類中的成員可以是private、默認、protected、public的,而接口中的成員全都是public的。抽象類中可以定義成員變量,而接口中定義的成員變量實際上都是常量。有抽象方法的類必須被聲明為抽象類,而抽象類未必要有抽象方法。

11、HashMap和HashTable有何不同?

HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。

集合框架”提供兩種常規(guī)的Map實現:HashMap和TreeMap (TreeMap實現SortedMap接口)。

在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。使用HashMap要求添加的鍵類明確定義了hashCode()和 equals()的實現。

12、&操作符和&&操作符有什么區(qū)別?

當一個&表達式在求值的時候,兩個操作數都會被求值,&&更像是一個操作符的快捷方式。當一個&&表達式求值的時候,先計算第一個操作數,如果它返回true才會計算第二個操作數。如果第一個操作數取值為fale,第二個操作數就不會被求值。

總結

以上是生活随笔為你收集整理的java 安卓基础面试题_android-------Java 常问的基础面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。