java遇见的问题分析
下面就一些java的一些基本問(wèn)題進(jìn)行解釋。其中藍(lán)色部分為handsomecui的主觀看法
一.synchronized(obj)里面的參數(shù)怎么解釋?
synchronized的參數(shù)代表的是“對(duì)象鎖”代表的是不同的線程在synchronized塊里,
同時(shí)只有一個(gè)線程能執(zhí)行該代碼塊,而類的不同實(shí)例之間是互不影響的。
比如Person A = new Person(),Person B = new Person().A和B之間是不受synchronized制約的。
二.創(chuàng)建線程有哪幾種方法?
有三種方式可以用來(lái)創(chuàng)建線程:
1.繼承Thread類
2.實(shí)現(xiàn)Runnable接口
3.應(yīng)用程序可以使用Executor框架來(lái)創(chuàng)建線程池
三. ”static”關(guān)鍵字是什么意思?Java中是否可以覆蓋(override)一個(gè)private或者是static的方法?
“static”關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒(méi)有所屬的類的實(shí)例變量的情況下被訪問(wèn)。
Java中static方法不能被覆蓋,因?yàn)?span style="color:#ff0000;">方法覆蓋是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而static方法是編譯時(shí)靜態(tài)綁定的。
static方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。
?
四.是否可以在static環(huán)境中訪問(wèn)非static變量?
static變量在Java中是屬于類的,它在所有的實(shí)例中的值是一樣的。
當(dāng)類被Java虛擬機(jī)載入的時(shí)候,會(huì)對(duì)static變量進(jìn)行初始化。
如果你的代碼嘗試不用實(shí)例來(lái)訪問(wèn)非static的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)?span style="color:#ff0000;">這些變量還沒(méi)有被創(chuàng)建出來(lái),還沒(méi)有跟任何實(shí)例關(guān)聯(lián)上。
(注意,非static變量是實(shí)例化后才被創(chuàng)建,而static變量是類創(chuàng)建時(shí)就被創(chuàng)建)
?五.int與Integer的區(qū)別:
int 是基本數(shù)據(jù)類型
Integer是其包裝類,注意是一個(gè)類。
為什么要提供包裝類呢???
1.為了在各種類型間轉(zhuǎn)化,通過(guò)各種方法的調(diào)用。否則 你無(wú)法直接通過(guò)變量轉(zhuǎn)化。例如int x = Integer.valueOf("66");
2.泛型 List<Integer> nums;
這里<>需要類,要用Integer
六.Java中intValue,parseInt,Valueof?這三個(gè)關(guān)鍵字的區(qū)別?
int a = Integer.parseInt("123");(相當(dāng)于把“123”轉(zhuǎn)化為基本數(shù)據(jù))
??? Integer b = Integer.valueOf("123");(相當(dāng)于把“123”轉(zhuǎn)化為一個(gè)Integer對(duì)象)
??? int c = b.intValue();(將123的對(duì)象表示形式轉(zhuǎn)化為基本數(shù)據(jù)123)
也就是 Integer.valueOf("123").intValue() 等價(jià)于 Integer.parseInt("123")
七.java不支持多繼承,但可以實(shí)現(xiàn)多個(gè)接口。
八.synchronized用在方法上級(jí)別是粗粒度鎖,用在代碼塊上是細(xì)粒度鎖。
九.Java集合類框架的基本接口有哪些?
- Collection:代表一組對(duì)象,每一個(gè)對(duì)象都是它的子元素。
- Set:不包含重復(fù)元素的Collection。
- List:有順序的collection,并且可以包含重復(fù)元素。
- Map:可以把鍵(key)映射到值(value)的對(duì)象,鍵不能重復(fù)。
ArrayList和 LinkedList 實(shí)現(xiàn)了List接口,HashSet實(shí)現(xiàn)了Set接口,這幾個(gè)都比較常用;
HashMap 和HashTable實(shí)現(xiàn)了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]十.接口和抽象類的區(qū)別是什么?
Java提供和支持創(chuàng)建抽象類和接口。它們的實(shí)現(xiàn)有共同點(diǎn),不同點(diǎn)在于:
- 接口中所有的方法隱含的都是抽象的。而抽象類則可以同時(shí)包含抽象和非抽象的方法。
- 類可以實(shí)現(xiàn)很多個(gè)接口,但是只能繼承一個(gè)抽象類
- 類如果要實(shí)現(xiàn)一個(gè)接口,它必須要實(shí)現(xiàn)接口聲明的所有方法。但是,類可以不實(shí)現(xiàn)抽象類聲明的所有方法,當(dāng)然,在這種情況下,類也必須得聲明成是抽象的。
- 抽象類可以在不提供接口方法實(shí)現(xiàn)的情況下實(shí)現(xiàn)接口。
- Java接口中聲明的變量默認(rèn)都是final的。抽象類可以包含非final的變量。
- Java接口中的成員函數(shù)默認(rèn)是public的。抽象類的成員函數(shù)可以是private,protected或者是public。
- 接口是絕對(duì)抽象的,不可以被實(shí)例化。抽象類也不可以被實(shí)例化,但是,如果它包含main方法的話是可以被調(diào)用的。
總結(jié)
以上是生活随笔為你收集整理的java遇见的问题分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaFX 一 出生新手村(
- 下一篇: 解决 web.xml is missin