標籤:成員變數 nsf 類型 run treemap ati tco ping 20px
下面就一些java的一些基本問題進行解釋。其中藍色部分為handsomecui的主觀看法
一.synchronized(obj)裡面的參數怎麼解釋?
synchronized的參數代表的是“對象鎖”代表的是不同的線程在synchronized塊裡,
同時只有一個線程能執行該代碼塊,而類的不同執行個體之間是互不影響的。
比如Person A = new Person(),Person B = new Person().A和B之間是不受synchronized制約的。
二.建立線程有哪幾種方法?
有三種方式可以用來建立線程:
1.繼承Thread類
2.實現Runnable介面
3.應用程式可以使用Executor架構來建立線程池
三. ”static”關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法?
“static”關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的執行個體變數的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而static方法是編譯時間靜態繫結的。
static方法跟類的任何執行個體都不相關,所以概念上不適用。
四.是否可以在static環境中訪問非static變數?
static變數在Java中是屬於類的,它在所有的執行個體中的值是一樣的。
當類被Java虛擬機器載入的時候,會對static變數進行初始化。
如果你的代碼嘗試不用執行個體來訪問非static的變數,編譯器會報錯,因為這些變數還沒有被建立出來,還沒有跟任何執行個體關聯上。
(注意,非static變數是執行個體化後才被建立,而static變數是類建立時就被建立)
五.int與Integer的區別:
int 是基礎資料型別 (Elementary Data Type)
Integer是其封裝類,注意是一個類。
為什麼要提供封裝類呢???
1.為了在各種類型間轉化,通過各種方法的調用。否則 你無法直接通過變數轉化。例如int x = Integer.valueOf("66");
2.泛型 List<Integer> nums;
這裡<>需要類,要用Integer
六.Java中intValue,parseInt,Valueof 這三個關鍵字的區別?
int a = Integer.parseInt("123");(相當於把“123”轉化為基本資料)
Integer b = Integer.valueOf("123");(相當於把“123”轉化為一個Integer對象)
int c = b.intValue();(將123的對象表示形式轉化為基本資料123)
也就是 Integer.valueOf("123").intValue() 等價於 Integer.parseInt("123")
七.java不支援多繼承,但可以實現多個介面。
八.synchronized用在方法上層級是廣泛鎖定,用在代碼塊上是細部鎖定。
九.Java集合類架構的基本介面有哪些?
- Collection:代表一組對象,每一個對象都是它的子項目。
- Set:不包含重複元素的Collection。
- List:有順序的collection,並且可以包含重複元素。
- Map:可以把鍵(key)映射到值(value)的對象,鍵不能重複。
ArrayList和 LinkedList 實現了List介面,HashSet實現了Set介面,這幾個都比較常用;
HashMap 和HashTable實現了Map介面,並且HashTable是安全執行緒的,但是HashMap效能更好
java.util.Collection [I]
|—java.util.List [I] |—java.util.ArrayList [C] |—java.util.LinkedList [C] |—java.util.Vector [C] |—java.util.Stack [C] |—java.util.Set [I] |—java.util.HashSet [C] |—java.util.SortedSet [I] |—java.util.TreeSet [C]
java.util.Map [I]
|—java.util.SortedMap [I] |—java.util.TreeMap [C] |—java.util.Hashtable [C] |—java.util.HashMap [C] |—java.util.LinkedHashMap [C] |—java.util.WeakHashMap [C]
java遇見的問題分析