java的一些基本概念

最近想看看書,瞭解一下java的基本概念,其實以前也看過,但是囫圇吞棗,實在有愧.然而溫故以知新,學習本應就是理解深化的過程.
主要看的書是《Java 2 參考大全》和《Java 2 核心技術:原理》

Java基本概念
一.字符類型
主要重溫了一下各種字符類型佔據的字節數。
short 短整型 16位  2字節
int     整型   32位  4字節
long  長整型  64位 8字節 
浮點分單精度float和雙精度double
float  單精度  32位 4字節
double雙精度 64位  8字節

char 這一點比較特殊,java使用的不是ascii字符,也不是擴展的8位字符集,而是unicode字符集,unicode字符佔據16位,2字節,可以表示人類所有發現的字符,也因爲如此java可以比較方便的進行國際化,不知這個理解有無問題。
實際上char的值是個整數(0-65536),因此我們給char賦值可以用整數或者用單引號括起來的字符
順便就看了一下UTF(unicode text format)格式,它是這樣出來16位的unicode字符
前九位爲0的unicode字符:一個字節
前五位爲0的unicode字符:兩個字節
其它:三個字節
對應的前綴編碼:
0xxxxxxx  Ascii碼
10xxxxxx  第二或者第三個字節
110xxxxx 兩字節序列中的第一個字節
1110xxxx 三字節序列中的第一個字節

二.類
類與對象:類是一個邏輯結構,對象擁有物理實體.也就是說類不佔據內存空間,對象佔據一定的內存空間.可以從類對象的獲取說明這個問題。
    Box aBox=new Box();
實際上這個過程分兩步
     Box aBox;
   aBox=new Box();
第一步是創建一個對象,返回的aBox是一個對象的引用。
第二步纔是調用構造函數,爲對象分配內存空間,返回的是這個內存地址的引用,這個引用被賦給了aBox。
構造函數是如何工作的呢?
構造函數沒有返回值,是因爲其隱含的返回類型是類本身。
默認的構造函數自動將所有的實例變量初始化爲0。
實例變量即是一個類中定義的數據或變量,類的成員是指類中定義的方法和變量。

引用是個很有意思的東西。
       Box a=new Box();
           Box b=new Box();
這個時候a和b對應各自的內存地址,如果
      a=b;
這個時候a,b均指向同一個內存地址即b的內存地址。也就是說現在你更改a中的成員變量的值b的變量的值也隨之改變;如果改變b中成員變量的值,a的對應變量也隨之改變。引用只是一個內存的地址。

類中有個詞語叫做抽象類,抽象類有很多含義和細節需要注意:
1。包含抽象方法的類必須聲明爲抽象類
2。抽象類的方法在子類中必須被覆蓋,否則子類也必須聲明爲抽象類
3。抽象類不能有對象,不能new一個抽象類將其實例化
4。抽象類可以有抽象方法也可以有具體實現了的方法
5。抽象類可以創建對象引用
第五條非常有用,可以實現多態。李乾師兄曾講解的設計模式中的工廠方法也就是抽象類的超類變量引用不同的子類對象。
由於接口都沒有實現自身的方法,如果一個類沒有實現接口中的方法,也必須定義爲抽象類。

三.接口
接口只定義方法名,但是不實現方法。
接口可以聲明變量,但是這些變量將是隱含的、最終的、靜態的,不能由實現接口的類來改變。因此可以將共享常量在接口中定義,然後導入到多個類中。
可以使用接口引用來調用實現,這是什麼意思呢?
inerface callback()
{
  public void call(int p)
  {

  }
}

class client implements callback
{
  public void call(int p)
  {

  }

}

public static void (String arg[])
{
<b>callback c=new client();</b>
c.call(1);
}

注意上面黑體字部分callback c=new client(), 創建了一個client對象,卻聲明爲接口類型,這其中的意思就是c只是知道接口callback中方法,至於實現這個接口的client類還有什麼其它的方法,c一概不知。這有些類似超類引用子類對象,很有用處的地方就是實現多態,很多實現這個接口的類可以用同一個接口的引用來調用。

四. 訪問控制

五. 一些保留字的含義和運用
static:一般修飾類的成員,使該類成員獨立於類的任何對象,使用類名即可調用。
使用static要注意:
1.static 方法僅可調用其它的static方法
2.只能訪問static數據
3.不能以任何方式調用this或者super。(還不明白爲什麼)

this:在任何方法中都可以使用this來調用當前的對象,this總是當前對象的一個引用。
this可以用於實例變量隱藏
所謂實例變量隱藏,就是說當一個本地變量和一個實例變量同名時,實例變量就被隱藏了。比如Box的構造函數
Box( double aWidth,double aHeight , double aDepth )
{
width=aWidth;
height=aHeight ;
depth=aDepth;
}
如果這時候參數是 width,height,depth,則這些本地的變量就會和類的成員變量同名,這時候就會發生實例變量被隱藏的現象。但是this可以避免這種情況。
 Box( double width,double height , double depth )
{
this.width=width;
this.height=height ;
this.depth=depth;
}
this直接引用對象,可以解決名字空間的問題,即本地變量和類的實例變量同名的問題。(這個需要再想想)

super:主要有兩種用法
1。super(parameter_list)調用超類的構造函數,但是這必須是子類構造函數的第一條語句。這裏有趣的事情是子類構造函數調用超類構造函數時,過程是怎麼樣的;實際上是按照類的派生順序調用構造函數。
2。super.member 這時候作爲超類對象的引用調用超類的方法或者實例變量

final:可修飾變量,方法和類。
final 變量:變量的內容不能被修改
final 方法:方法不能被重載
final 類  :類不能被繼承

 


 

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