天天學JAVA-JAVA基礎(2)

如果覺得我寫的還行,請關注我的博客並且點個贊喲。本文主要介紹JAVA基礎相關問題,通過閱讀本文,你將掌握以下10點

1.StringBuffer 、StringBuilder 和 String 的區別是什麼?
2.在一個靜態方法內調用一個非靜態成員爲什麼是非法的?
3.接口和抽象類的區別是什麼?
4.成員變量與局部變量的區別有哪些?
5一個類的構造方法的作用是什麼? 若一個類沒有聲明構造方法,該程序能正確執行嗎? 爲什麼?
6.靜態方法和實例方法有何不同?
7.hashCode 介紹?
8.爲什麼Java中只有值傳遞?
9.線程有哪些基本狀態?
10.一道阿里面試題,你會做嗎?

1. StringBuffer 、StringBuilder 和 String 的區別是什麼?

字符修改上的區別:
String:不可變字符串;
StringBuffer:可變字符串、效率低、線程安全;
StringBuilder:可變字符序列、效率高、線程不安全;

初始化上的區別:
String可以空賦值,StringBuffer不行,會報錯(讀者可自行測試)

小結:
(1)如果要操作少量的數據用 String;

(2)多線程操作字符串緩衝區下操作大量數據 StringBuffer;

(3)單線程操作字符串緩衝區下操作大量數據 StringBuilder(推薦使用)。

2.在一個靜態方法內調用一個非靜態成員爲什麼是非法的?

答案:非法
原因:由於靜態方法可以不通過對象進行調用,因此在靜態方法裏,不能調用其他非靜態變量,也不可以訪問非靜態變量成員

3.接口和抽象類的區別是什麼?

1.接口的方法默認是 public,所有方法在接口中不能有實現(Java 8 開始接口方法可以有默認實現),而抽象類可以有非抽象的方法。
2.接口中除了static、final變量,不能有其他變量,而抽象類中則不一定。
3.一個類可以實現多個接口,但只能實現一個抽象類。接口自己本身可以通過extends關鍵字擴展多個接口。
4.接口方法默認修飾符是public,抽象方法可以有public、protected和default這些修飾符(抽象方法就是爲了被重寫所以不能使用private關鍵字修飾!)。
5.從設計層面來說,抽象是對類的抽象,是一種模板設計,而接口是對行爲的抽象,是一種行爲的規範

4.成員變量與局部變量的區別有哪些?

定義的位置上區別:
1. 成員變量是定義在方法之外,類之內的。
2. 局部變量是定義在方法之內。
作用上的區別:
1. 成員變量的作用是用於描述一類事物的公共 屬性的。
2. 局部變量的作用就是提供一個變量給方法內部使用而已。
生命週期區別:
1. 隨着對象 的創建而存在,隨着對象的消失而消失。
2. 局部變量在調用了對應的方法時執行到了創建該變量的語句時存在,局部變量一旦出了自己的作用域, 那麼馬上從內存中消失。
初始值的區別:
1. 成員變量是有默認的初始值。
數據類型 默認的初始值
int 0
float 0.0f
double 0.0
boolean false
char ’ ’
String(引用數據類型) null
2. 局部變量是沒有默認的初始值的,必須要先初始化才能使用。

5一個類的構造方法的作用是什麼? 若一個類沒有聲明構造方法,該程序能正確執行嗎? 爲什麼?

主要作用是完成對類對象的初始化工作。可以執行。因爲一個類即使沒有聲明構造方法也會有默認的不帶參數的構造方法。

6.靜態方法和實例方法有何不同?

1.在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。

2.靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變量和靜態方法),而不允許訪問實例成員變量和實例方法;實例方法則無此限制。

7.hashCode 介紹?

hashCode() 的作用是獲取哈希碼,也稱爲散列碼;它實際上是返回一個int整數。這個哈希碼的作用是確定該對象在哈希表中的索引位置。hashCode()
定義在JDK的Object.java中,這就意味着Java中的任何類都包含有hashCode() 函數。
散列表存儲的是鍵值對(key-value),它的特點是:能根據“鍵”快速的檢索出對應的“值”。這其中就利用到了散列碼!(可以快速找到所需要的對象)

8.爲什麼Java中只有值傳遞?

按值調用(call by value)表示方法接收的是調用者提供的值,而按引用調用(call by
reference)表示方法接收的是調用者提供的變量地址。一個方法可以修改傳遞引用所對應的變量值,而不能修改傳遞值調用所對應的變量值。它用來描述各種程序設計語言(不只是Java)中方法參數傳遞方式。

Java程序設計語言總是採用按值調用。也就是說,方法得到的是所有參數值的一個拷貝,也就是說,方法不能修改傳遞給它的任何參數變量的內容

9.線程有哪些基本狀態?

線程創建之後它將處於 NEW(新建) 狀態,調用 start() 方法後開始運行,線程這時候處於 READY(可運行)狀態。可運行狀態的線程獲得了 cpu 時間片(timeslice)後就處於 RUNNING(運行) 狀態

10.在關係型是數據庫中,有兩個不同的事務同時操作數據庫中同一表的同一行,不會引起衝突的是(阿里面試題)

A.其中一個DELETE操作,一個是SELECT操作
B.其中兩個都是UPDATE
C.其中一個是SELECT,一個是UPDATE
D.其中一個SELECT
E.其中一個是DELETE,另一個是UPDATE
F.兩個都是DELETE

如果你想知道答案或者你知道答案,請留言或者關注下方 公衆號,並且回覆1026,將會得到答案和解析喲。

如果你覺得我寫的還行,請關注我的博客並且點個贊喲,也請關注我的公衆號,每天會定時推送乾貨.

在這裏插入圖片描述

在這裏插入圖片描述

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