JAVA基礎回顧一

JAVA基礎一
JAVA的基礎部分, 我們學習JAVA主要學習它的基本語法/類相關的語法, 以及內部類的語法, JAVA的面向對象,異常,線程, 集合語法,i/o的用法,等等.
在JAVA中還必須學習其中的:
保留字: True , False, null , goto , const, java
     inner, outer, var,其中const和goto被保留但未被使用.
java中保留字的含義是現有的java版本尚未使用, 但以後的版本可能會作爲關鍵字使用.
關鍵字: abstract , assert , boolean ,  break   ,   
           byte , case   , catch   ,  char    ,
          class , const  , contnue ,  default ,
           do   , double , else    ,  enum    ,
        extends , final  , finally ,  float   ,
         for    ,  if    ,implements, import  , 
     instanceof , int    ,interface , long    ,
       native   , new    , package  , private , 
       protected, public , return   , short   ,
       static   ,strictfp , super   , switch  ,
    synchronized,this    ,  throw   , throws  , 
        try     , void   ,   while  ,  ......
在JAVA中, 一個源文件中是否可以包含多個類?(不是內部類)?有什麼限制?

可以有多個類, 但是只能有一個public公共的類, 並且public的類名必須與文件名相同!
Java有沒有goto?
java中的保留字, 但是現在沒有在java中使用.
& 與&&的區別?
&和&&都可以用作邏輯與的運算符, 表示邏輯與(and), 當運算符兩邊的表達式的結果都是true時候, 整個運算結果才爲true,否則, 只要有一方爲false,則結果爲false.
&&還具有短路的功能, 即如果第一個表達式爲false, 則不計算第二個表達式, (例如,if(str != null && !str.equals(“”))表達式,當str爲null時, 後面的表達式就不會執行, 所以不會出現NullPointException如果將&&改爲&, 則會拋出Nullpointexception異常,
&還可以用作位運算符, 當&操作符兩邊的表達式,不是一個boolean類型時,&表示按位與操作, 我們通常使用 0x0f來與一個整數進行&運算, 來獲取整數的最低4個bit位./
Switch語句能否作用在byte上,能否作用在long上, 能否在String上.?
在java中如何結束一個循環,用break結束跳出循環. 整數表達式可以是int基本類型或者Integer包裝類型, 由於, byte,short, char都可以隱含轉化int, 所以,這個類型已經這些類型的包裝類型也是可以的, 顯然. long和String類型都不符合, switch的語法規範, 並且不能隱式轉換 成int類型, 所以, 他們不能作用switch語句.
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編譯器會對它進行特殊處理, 因此可以正確編譯.
char類型變量能不能存貯一箇中文漢字?爲什麼?
char類型變量是用來存儲Unicode編碼的字符的, unicodebianma字符集中包含了漢字, 所以, char型變量中可以存儲漢字.不過如果某個特殊的漢字,沒有被包含unicode編碼字符集中, 那麼, 這個char型變量中就不能存儲這個特殊漢字, 補充說明, unicode編碼佔用, 兩個字節, 所以char類型的變量也是佔用兩個字節.
用最優效率的方法算出2乘以8等於幾?
2<<3, 因爲將一個數左移n次方, 那麼一個數乘以8只要將其左移3位即可,
使用final關鍵字修飾的一個變量, 是引用不能變,還是引用的對象不能變?
使用final關鍵字修飾的一個變量時,是指引用變量不變, 引用變量所指向的對象中的內容還是可以改變的, 例如,Final StringBuffer a = new StringBuffer(“immutable”);
執行如下語句將報告編譯期錯誤:
a = new StringBuffer(“”);
但是, 執行如下的語句則可以通過編譯:
a.append(“broken!”);
有人在定義方法的參數時, 可能想採用如下形式來阻止方法內部修改傳進來的參數對象:public void method(final StringBuffer param){
}實際上, 這是辦不到的. 在該方法內部仍然可以增加如下代碼來修改參數對象:param.append(“a”);
在Java中有符號”==”和equals方法究竟有何區別?
“==”操作符專門用來比較兩個變量是否相等,也就是用於比較變量所對應的內存中所存儲的數值是否相同, 要比較兩個基本類型的數據或兩個引用變量是否相等, 只能用==操作符!
如果一個變量指向的數據是對象類型的, 那麼, 這時候涉及了兩塊內存, 對象本身佔用,一塊內存(堆內存)變量也佔用一塊內存, 例如,object 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;在實際開發中, 我們經常要比較傳遞進來的字符串的內容是否相等, 例如,Stringinput = input.equals(quit);許多人稍不注意,就使用==進行比較了, 這是錯誤的. 記住, 字符串的比較基本上都是使用equals方法.
如果一個類沒有自己定義equlas方法, 那麼它將繼承Object類的equals方法, object類的equals方法的實現代碼如下:
boolean equals(Object o){
return this ==o;}
這說明,如果一個類沒有自己定義的equals方法,他默認的equals方法就是使用==操作符, 也是在兩個變量指向的對象是否是同一對象, 這時候使用equals和使用==會得到同樣的結果, 如果比較的是兩個獨立的對象則總返回false. 如果你編寫的類希望能夠比較該類穿件的兩個勢力對象的內容是否相同, 那麼你必須覆蓋equals方法,由自己寫代碼來決定在什麼情況即可認爲兩個對象的內容是相同的.
由於最近在找工作, 所以也在重新學習整理在JAVA中的一些基礎知識,所以,後續的更新也會堅持到找到工作以後, 養成一個長期寫博客的習慣!讓我們一起見證自己.

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