1. 程式人生 > >Java基礎面試複習一

Java基礎面試複習一

做Java業務開發很久了,有些技術快忘了?

來吧,讓我們從基礎重新開始複習一下~~~

1、一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制?
可以有多個類,但只能有一個public的類,並且public的類名必須與檔名相一致。

2、Java有沒有goto?
java中的保留字,現在沒有在java中使用。

3、說說&和&&的區別。
&和&&都可以用作邏輯與的運算子,表示邏輯與(and),當運算子兩邊的表示式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
&&還具有短路的功能,即如果第一個表示式為false,則不再計算第二個表示式,例如,對於if(str != null&& !str.equals(“”))表示式,當str為null時,後面的表示式不會執行,所以不會出現NullPointerException如果將&&改為&,則會丟擲NullPointerException異常。If(x==33 &++y>0) y會增長,If(x==33 && ++y>0)不會增長
&還可以用作位運算子,當&操作符兩邊的表示式不是boolean型別時,&表示按位與操作,
我們通常使用
0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。
備註:這道題先說兩者的共同點,再說出&&和&的特殊之處,並列舉一些經典的例子來表明自己理解透徹深入、實際經驗豐富。

4、在JAVA中如何跳出當前的多重巢狀迴圈?
在Java中,要想跳出多重迴圈,可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的程式碼中使用帶有標號的break語句,即可跳出外層迴圈。例如,
ok:
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
System.out.println(“i=” + i + “,j=” + j);
if(j == 5) break ok;
}
}
另外,我個人通常並不使用標號這種方式,而是讓外層的迴圈條件表示式的結果可以受到裡層迴圈體程式碼的控制,例如,要在二維陣列中查詢到某個數字。
int arr[][] ={{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length&& !found;i++) {
for(int j=0;j<arr[i].length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] ==5) {
found = true;
break;
}
}
}

5、switch語句能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(expr1)中,expr1只能是一個整數表示式或者列舉常量(更大字型),整數表示式可以是int基本型別或Integer包裝型別,由於,byte,short,char都可以隱含轉換為int,所以,這些型別以及這些型別的包裝型別也是可以的。顯然,
long和String型別都不符合switch的語法規定,並且不能被隱式轉換成int型別,所以,它們不能作用於swtich語句中。

6、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?


對於short s1 = 1; s1 = s1 + 1;由於s1+1運算時會自動提升表示式的型別,所以結果是int型,再賦值給short型別s1時,編譯器將報告需要強制轉換型別的錯誤。
對於short s1 = 1; s1 += 1;由於 +=是java語言規定的運算子,java編譯器會對它進行特殊處理,因此可以正確編譯。

7、char型變數中能不能存貯一箇中文漢字?為什麼?
char型變數是用來儲存Unicode編碼的字元的,unicode編碼字符集中包含了漢字,所以,char型變數中當然可以儲存漢字啦。不過,如果某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變數中就不能儲存這個特殊漢字。補充說明:unicode編碼佔用兩個位元組,所以,char型別的變數也是佔用兩個位元組。
備註:後面一部分回答雖然不是在正面回答題目,但是,為了展現自己的學識和表現自己對問題理解的透徹深入,可以回答一些相關的知識,做到知無不言,言無不盡。

8、用最有效率的方法算出2乘以8等於幾?
2 << 3,
因為將一個數左移n位,就相當於乘以了2的n次方,那麼,一個數乘以8只要將其左移3位即可,而位運算cpu直接支援的,效率最高,所以,2乘以8等於幾的最效率的方法是2 << 3。

9、請設計一個一百億的計算器
首先要明白這道題目的考查點是什麼,一是大家首先要對計算機原理的底層細節要清楚、要知道加減法的位運算原理和知道計算機中的算術運算會發生越界的情況,二是要具備一定的面向物件的設計思想。
首先,計算機中用固定數量的幾個位元組來儲存的數值,所以計算機中能夠表示的數值是有一定的範圍的,為了便於講解和理解,我們先以byte型別的整數為例,它用1個位元組進行儲存,表示的最大數值範圍為-128到+127。-1在記憶體中對應的二進位制資料為11111111,如果兩個-1相加,不考慮Java運算時的型別提升,運算後會產生進位,二進位制結果為1,11111110,由於進位後超過了byte型別的儲存空間,所以進位部分被捨棄,即最終的結果為11111110,也就是-2,這正好利用溢位的方式實現了負數的運算。-128在記憶體中對應的二進位制資料為10000000,如果兩個-128相加,不考慮Java運算時的型別提升,運算後會產生進位,二進位制結果為1,00000000,由於進位後超過了byte型別的儲存空間,所以進位部分被捨棄,即最終的結果為00000000,也就是0,這樣的結果顯然不是我們期望的,這說明計算機中的算術運算是會發生越界情況的,兩個數值的運算結果不能超過計算機中的該型別的數值範圍。由於Java中涉及表示式運算時的型別自動提升,我們無法用byte型別來做演示這種問題和現象的實驗,大家可以用下面一個使用整數做實驗的例子程式體驗一下:
int a = Integer.MAX_VALUE;
int b = Integer.MAX_VALUE;
int sum = a + b;
System.out.println(“a=”+a+”,b=”+b+”,sum=”+sum);
先不考慮long型別,由於int的正數範圍為2的31次方,表示的最大數值約等於2*1000*1000*1000,也就是20億的大小,所以,要實現一個一百億的計算器,我們得自己設計一個類可以用於表示很大的整數,並且提供了與另外一個整數進行加減乘除的功能,大概功能如下:
(1)這個類內部有兩個成員變數,一個表示符號,另一個用位元組陣列表示數值的二進位制數
(2)有一個構造方法,把一個包含有多位數值的字串轉換到內部的符號和位元組陣列中
(3)提供加減乘除的功能
public class BigInteger{
int sign;
byte[] val;
public Biginteger(String val) {
sign = ;
val = ;
}
public BigInteger add(BigInteger other) {
}
public BigInteger subtract(BigInteger other) {
}
public BigInteger multiply(BigInteger other){
}
public BigInteger divide(BigInteger other){
}
}
備註:要想寫出這個類的完整程式碼,是非常複雜的,如果有興趣的話,可以參看jdk中自帶的java.math.BigInteger類的原始碼。面試的人也知道誰都不可能在短時間內寫出這個類的完整程式碼的,他要的是你是否有這方面的概念和意識,他最重要的還是考查你的能力,所以,你不要因為自己無法寫出完整的最終結果就放棄答這道題,你要做的就是你比別人寫得多,證明你比別人強,你有這方面的思想意識就可以了,畢竟別人可能連題目的意思都看不懂,什麼都沒寫,你要敢於答這道題,即使只答了一部分,那也與那些什麼都不懂的人區別出來,拉開了距離,算是矮子中的高個,機會當然就屬於你了。另外,答案中的框架程式碼也很重要,體現了一些面向物件設計的功底,特別是其中的方法命名很專業,用的英文單詞很精準,這也是能力、經驗、專業性、英語水平等多個方面的體現,會給人留下很好的印象,在程式設計能力和其他方面條件差不多的情況下,英語好除了可以使你獲得更多機會外,薪水可以高出一千元。

10、使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
使用final關鍵字修飾一個變數時,是指引用變數不能變,引用變數所指向的物件中的內容還是可以改變的。例如,對於如下語句:
final StringBuffer a=new StringBuffer("immutable"); 執行如下語句將報告編譯期錯誤:
a=new StringBuffer(""); 但是,執行如下語句則可以通過編譯:
a.append(" broken!");
有人在定義方法的引數時,可能想採用如下形式來阻止方法內部修改傳進來的引數物件:
public void method(final StringBuffer param){
}
實際上,這是辦不到的,在該方法內部仍然可以增加如下程式碼來修改引數物件:
param.append("a");

11、"=="和equals方法究竟有什麼區別?
(單獨把一個東西說清楚,然後再說清楚另一個,這樣,它們的區別自然就出來了,混在一起說,則很難說清楚)==操作符專門用來比較兩個變數的值是否相等,也就是用於比較變數所對應的記憶體中所儲存的數值是否相同,要比較兩個基本型別的資料或兩個引用變數是否相等,只能用==操作符。
如果一個變數指向的資料是物件型別的,那麼,這時候涉及了兩塊記憶體,物件本身佔用一塊記憶體(堆記憶體),變數也佔用一塊記憶體,例如Objet obj = new Object();變數obj是一個記憶體,new Object()是另一個記憶體,此時,變數obj所對應的記憶體中儲存的數值就是物件佔用的那塊記憶體的首地址。對於指向物件型別的變數,如果要比較兩個變數是否指向同一個物件,即要看這兩個變數所對應的記憶體中的數值是否相等,這時候就需要用==操作符進行比較。
equals方法是用於比較兩個獨立物件的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個物件是獨立的。例如,對於下面的程式碼:
String a=new String("foo");
String b=new String("foo");
兩條new語句建立了兩個物件,然後用a/b這兩個變數分別指向了其中一個物件,這是兩個不同的物件,它們的首地址是不同的,即a和b中儲存的數值是不相同的,所以,表示式a==b將返回false,而這兩個物件中的內容是相同的,所以,表示式a.equals(b)將返回true。
在實際開發中,我們經常要比較傳遞進行來的字串內容是否等,例如,String input = …;input.equals(“quit”),許多人稍不注意就使用==進行比較了,這是錯誤的,隨便從網上找幾個專案實戰的教學視訊看看,裡面就有大量這樣的錯誤。記住,字串的比較基本上都是使用equals方法。
如果一個類沒有自己定義equals方法,那麼它將繼承Object類的equals方法,Object類的equals方法的實現程式碼如下:
boolean equals(Object o){
return this==o;
}
這說明,如果一個類沒有自己定義equals方法,它預設的equals方法(從Object類繼承的)就是使用==操作符,也是在比較兩個變數指向的物件是否是同一物件,這時候使用equals和使用==會得到同樣的結果,如果比較的是兩個獨立的物件則總返回false。如果你編寫的類希望能夠比較該類建立的兩個例項物件的內容是否相同,那麼你必須覆蓋equals方法,由你自己寫程式碼來決定在什麼情況即可認為兩個物件的內容是相同的。

12、靜態變數和例項變數的區別?
在語法定義上的區別:靜態變數前要加static關鍵字,而例項變數前則不加。
在程式執行時的區別:例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,只要程式載入了類的位元組碼,不用建立任何例項物件,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,例項變數必須建立物件後才可以通過這個物件來使用,靜態變數則可以直接使用類名來引用。
例如,對於下面的程式,無論建立多少個例項物件,永遠都只分配了一個staticVar變數,並且每建立一個例項物件,這個staticVar就會加1;但是,每建立一個例項物件,就會分配一個instanceVar,即可能分配多個instanceVar,並且每個instanceVar的值都只自加了1次。
public class VariantTest{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest(){
staticVar++;
instanceVar++;
System.out.println(“staticVar=” + staticVar + ”,instanceVar=”+ instanceVar);
}
}
備註:這個解答除了說清楚兩者的區別外,最後還用一個具體的應用例子來說明兩者的差異,體現了自己有很好的解說問題和設計案例的能力,思維敏捷,超過一般程式設計師,有寫作能力!

13、是否可以從一個static方法內部發出對非static方法的呼叫?
不可以。因為非static方法是要與物件關聯在一起的,必須建立一個物件後,才可以在該物件上進行方法呼叫,而static方法呼叫時不需要建立物件,可以直接呼叫。也就是說,當一個static方法被呼叫時,可能還沒有建立任何例項物件,如果從一個static方法中發出對非static方法的呼叫,那個非static方法是關聯到哪個物件上的呢?這個邏輯無法成立,所以,一個static方法內部發出對非static方法的呼叫。

14、Integer與int的區別
int是java提供的8種原始資料型別之一。Java為每個原始型別提供了封裝類,Integer是java為int提供的封裝類。int的預設值為0,而Integer的預設值為null,即Integer可以區分出未賦值和值為0的區別,int則無法表達出未賦值的情況,例如,要想表達出沒有參加考試和考試成績為0的區別,則只能使用Integer。在JSP開發中,Integer的預設為null,所以用el表示式在文字框中顯示時,值為空白字串,而int預設的預設值為0,所以用el表示式在文字框中顯示時,結果為
0,所以,int不適合作為web層的表單資料的型別。
在Hibernate中,如果將OID定義為Integer型別,那麼Hibernate就可以根據其值是否為null而判斷一個物件是否是臨時的,如果將OID定義為了int型別,還需要在hbm對映檔案中設定其unsaved-value屬性為0。
另外,Integer提供了多個與整數相關的操作方法,例如,將一個字串轉換成整數,Integer中還定義了表示整數的最大值和最小值的常量。

15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math類中提供了三個與取整有關的方法:ceil、floor、round,這些方法的作用與它們的英文名稱的含義相對應,例如,ceil的英文意義是天花板,該方法就表示向上取整,Math.ceil(11.3)的結果為12,Math.ceil(-11.3)的結果是-11;floor的英文意義是地板,該方法就表示向下取整,Math.ceil(11.6)的結果為11,Math.ceil(-11.6)的結果是-12;最難掌握的是round方法,它表示“四捨五入”,演算法為Math.floor(x+0.5),即將原來的數字加上0.5後再向下取整,所以,Math.round(11.5)的結果為12,Math.round(-11.5)的結果為-11。

16、下面的程式碼有什麼不妥之處?
1. if(username.equals(“zxx”){}
username可能為NULL,會報空指標錯誤;改為"zxx".equals(username)
2. int x = 1;
return x==1?true:false; 這個改成return x==1;就可以!

17、請說出作用域public,private,protected,以及不寫時的區別
這四個作用域的可見範圍如下表所示。
說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示friendly。
作用域  當前類 同一包(package)   子孫類 其他包(package)
public √√√√
protected√√√×
friendly√√××
private√×××
備註:只要記住了有4種訪問許可權,4個訪問範圍,然後將全選和範圍在水平和垂直方向上分別按排從小到大或從大到小的順序排列,就很容易畫出上面的圖了。

18、Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別?
Overload是過載的意思,Override是覆蓋的意思,也就是重寫。
過載Overload表示同一個類中可以有多個名稱相同的方法,但這些方法的引數列表各不相同(即引數個數或型別不同)。
重寫Override表示子類中的方法可以與父類中的某個方法的名稱和引數完全相同,通過子類建立的例項物件呼叫這個方法時,將呼叫子類中的定義方法,這相當於把父類中定義的那個完全相同的方法給覆蓋了,這也是面向物件程式設計的多型性的一種表現。子類覆蓋父類的方法時,只能比父類丟擲更少的異常,或者是丟擲父類丟擲的異常的子異常,因為子類可以解決父類的一些問題,不能比父類有更多的問題。子類方法的訪問許可權只能比父類的更大,不能更小。如果父類的方法是private型別,那麼,子類則不存在覆蓋的限制,相當於子類中增加了一個全新的方法。
至於Overloaded的方法是否可以改變返回值的型別這個問題,要看你倒底想問什麼呢?這個題目很模糊。如果幾個Overloaded的方法的引數列表不一樣,它們的返回者型別當然也可以不一樣。但我估計你想問的問題是:如果兩個方法的引數列表完全一樣,是否可以讓它們的返回值不同來實現過載Overload。這是不行的,我們可以用反證法來說明這個問題,因為我們有時候呼叫一個方法時也可以不定義返回結果變數,即不要關心其返回結果,例如,我們呼叫map.remove(key)方法時,雖然remove方法有返回值,但是我們通常都不會定義接收返回結果的變數,這時候假設該類中有兩個名稱和引數列表完全相同的方法,僅僅是返回型別不同,java就無法確定程式設計者倒底是想呼叫哪個方法了,因為它無法通過返回結果型別來判斷。
override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:
1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
3、覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類;
4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。
overload對我們來說可能比較熟悉,可以翻譯為過載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入引數來區分這些方法,然後再呼叫時,VM就會根據不同的引數樣式,來選擇合適的方法執行。在使用過載要注意以下的幾點:
1、在使用過載時只能通過不同的引數樣式。例如,不同的引數型別,不同的引數個數,不同的引數順序(當然,同一方法內的幾個引數型別必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));
2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;
3、方法的異常型別和數目不會對過載造成影響;
4、對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行過載,如果定義的話,也只是定義了一個新方法,而不會達到過載的效果。

19、構造器Constructor是否可被override?
構造器Constructor不能被繼承,因此不能重寫Override,但可以被過載Overload。

20、介面是否可繼承介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concrete class)?抽象類中是否可以有靜態的main方法?
介面可以繼承介面。抽象類可以實現(implements)介面,抽象類可以繼承具體類。抽象類中可以有靜態的main方法。
備註:只要明白了介面和抽象類的本質和作用,這些問題都很好回答,你想想,如果你是java語言的設計者,你是否會提供這樣的支援,如果不提供的話,有什麼理由嗎?如果你沒有道理不提供,那答案就是肯定的了。
只有記住抽象類與普通類的唯一區別:就是不能建立例項物件和允許有abstract方法。

相關推薦

Java基礎面試複習

做Java業務開發很久了,有些技術快忘了? 來吧,讓我們從基礎重新開始複習一下~~~ 1、一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制? 可以有多個類,但只能有一個public的類,並且public的類名必須與檔名相一致。 2、Java有沒有got

JAVA基礎面試專題

面向物件 1、面向物件和麵向過程的區別 面向過程關注於一個功能實現的步驟,按步驟程式設計實現功能。 面向物件關注於一個功能實現的行為,將一些行為封裝為一個物件來統一呼叫。 面向過程是一種事件為中心的程式設計思想。就是分析出解決問題所需的步驟,然後用函式把這些步驟實現,並按順序呼叫。面向過

Java基礎面試

Java基礎 1、Java中的幾種基本資料型別是什麼,各自佔用多少個位元組。 Boolean(1位,只有true和false)、byte(8位,1位元組)、char(16位,2位元組)、short(16位,2位元組)、int(32位,4位元組)、long(64位,8位元組

關於Java基礎複習總結()入門篇

千里之堤,毀於雙十一。 主題內容源於當初學Java的幾個筆記本。週末整理換季衣物的時候找到的。重新整理一遍,上傳儲存下來,也是對基礎的複習總結。同時紀念當年初學Java的日子。 1、java發展史 1995誕生於sun公司,被oracle公司收購 開源,免費的 1996年,推出jdk1

Java基礎知識複習

一、算術操作符 1.練習-求和:             要求: 使用Scanner從控制檯獲取兩個數字,然後計算這兩個數字的和 import java.util.Scanner; public class Test1 {

是時候複習一下Java基礎了(

寫了很久的程式碼,但是今天突然發現Java的很多基礎知識都漸漸變得模糊了。所以來從頭複習一下。 Java面向物件的理解 主要是面向物件的四大特徵(也有人說是三大特徵) 抽象 抽象就是尋找事物的共性,注意力放在目標相關的方面而忽略與其無關的方面。包括資料的

面試必備系列-Java基礎相關(

目前網上的面試題氾濫成災,真正有價值的很少,往往是爛大街的問題,同時也沒有給出正確的解決方案 , 本文旨在整理一一系列對面試者有幫助的文章,後續會持續更新。 String 類為什麼是final的 答案是為了 “效率”和安全, 安全: 由於String類被final修飾符

Java基礎面試集合(

一.Java傳遞引數的兩種方式:    1. 值傳遞:(傳值),八種基本資料型別和String(final)    2. 引用傳遞:(傳地址),其餘複合型別介面(陣列、類和介面)    3. 理解:針對Java引數,無論是原始型別還是引用型別,傳遞的都是副本:        

Java基礎面試:集合、內部類、線程

public 死鎖 exceptio read 多線程 三種 xtend arraylist 表示 package test; import java.util.Hashtable; import java.util.Map; public class test {

java基礎(十章)

調用 class 類和對象 可維護 lips 成員 成員方法 基礎 安全 一、理解什麽是類和對象 萬事萬物皆對象 1、屬性——對象具有的特征(特點) 2、方法——對象可執行的操作(能幹什麽事) 3、對象的定義: 是一個客觀

java基礎——Servlet(

.get protected pre exc 規範 直接下載 程序 新建 路徑 一.Servlet簡介 Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,主要功能在於交互式地瀏覽和修改數據

JAVA基礎面試(四)

object 共享 {} 回收對象 我們 ret cat bsp 文件 31、String s = new String("xyz");創建了幾個StringObject?是否可以繼承String類? 兩個或一個都有可能,”xyz”對應一個對象,這個對象放在

JAVA基礎面試(五)

錯誤 equal lin 道理 區別 方式 釋放 分配 針對 41、a.hashCode() 有什麽用?與 a.equals(b) 有什麽關系? hashCode() 方法對應對象整型的 hash 值。它常用於基於 hash 的集合類,如 Hashtable、

Java基礎(十) 面試題

Java基礎 程序員面試 反射 面試題: 如何獲取class字節碼文件對象/Class的類對象 三種方式來獲取這個class字節碼文件對象: 1)Object中的getClass() 2)任何數據類型的靜態屬性class 3)Class類中的方

Java基礎(十

tcp編程 反射 Java基礎 Javase (一)TCP編程(1)TCP(建立連接通道)編程的客戶端的開發步驟 1)創建客戶端的Socket對象 Socket:就是客戶端的Socket 構造方法 public Socket(InetAddress address,

java基礎之JDBC:概述及步驟詳解

etx fileread 操作 [] 全路徑 api mysql edi lean 1. JDBC的簡介 概述: 就是Java用來操作不同數據庫(DBMS)的類庫(技術), 本質就是一些類和接口. /* 類: Dri

Java基礎摘要(

引用 rom col 精確 發送 邏輯 內部數據 保留 實例 三大特性 封裝   所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是面向對象的特征之一,是對象和類概念的主要特性。簡單的說,一個類就

java基礎---選擇結構()

else if next() 基礎 條件 代碼 結構 == 代碼塊 boolean 1.什麽是if選擇結構? 可以處理單一或組合條件的情況(if選擇結構是根據條件判斷之後再做處理) 基本的if選擇結構 if ( 條件 ) { //代碼塊 } 條件必須是boolea

Java基礎系列(

java的基本型別與包裝類 1、java是純面向物件的語言,但是為了方便還是提供了8種基本的資料型別,基本資料型別的資料不具備“物件”的特性——沒有屬性、沒有方法。同時為了滿足其面向物件的特點,Java為每種基本資料型別分別設計了對應的類,稱為包裝類,並且為其新增一些實用的方法。 基本型

java基礎知識總結

java基礎知識總結一 Map之一個Key存多個Value的MultiValueMap(一個鍵多個值) MultiValueMap<String, String> stringMultiValueMap = new LinkedMultiValueMa