Java基礎串理

StephaniaBr 8年前發布 | 40K 次閱讀 Java開發 Java

今天抽了些時間翻閱資料復習一下Java部分基礎知識,現整理筆記在此以備鞏固。

Java主要應用領域

企業級應用:主要指復雜的大企業的軟件系統、各種類型的網站。Java的安全機制以及它的跨平臺的優勢,使它在分布式系統領域開發中有廣泛應用。應用領域包括金融、電信、交通、電子商務等。
Android平臺應用:Android應用程序使用Java語言編寫。Android開發水平的高低很大程度上取決于Java語言核心能力是否扎實。
移動領域應用,主要表現在消費和嵌入式領域,是指在各種小型設備上的應用,包括手機、PDA、機頂盒、汽車通信設備等。

java語言起源、特點

起源: java之父Jgosling與其團隊在開發”Green”項目時,發現C缺少垃圾回收系統、可移植的安全性、分布式程序設計、和多線程功能。于是,他們想要一種易于移植到各種設備上的平臺。

特點: Java從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發展和衍生的產物。比如Java語言的變量聲明,操作符形式,參數傳遞,流程控制等方面和C語言、C++語言完全相同。因此Java語言是易學的。Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。

但同時,Java是一個純粹的面向對象的程序設計語言,它繼承了 C++語言面向對象技術的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據的內存空間。

JDK1.5引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數和自動裝/拆箱。

Java語言是強制面向對象的。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現機制(關鍵字為implements)。

Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口(java net),它提供了用于網絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。

Java語言是健壯的。Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。

Java語言是安全的。Java通常被用在網絡環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。如:安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節代碼檢查。

Java語言是解釋型、跨平臺的。Java程序(后綴為java的文件)在Java平臺上被編譯為體系結構中立的字節碼格式(后綴為class的文件),然后可以在實現這個Java平臺的任何系統的解釋器中運行。

Java語言是原生支持多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。

Java基礎模塊圖解

這里寫圖片描述


面向對象

面向對象與面向過程

這里寫圖片描述

學習面向對象內容的三條主線:

1. java類及類的成員;
2. 面向對象的三大特征;
3. 其它關鍵字。

1. java類及類的成員

面向對象程序設計的重點是類的設計。Java中用類class來描述事物,類主要由屬性、方法(行為)組成,關于屬性、方法相關概念可以簡單理解成:
Field = 屬性 = 成員變量,Method = (成員)方法 = 函數

類成員的基礎構成如下:

<code>這里寫圖片描述</code>

還可以是這樣:

這里寫圖片描述

有了類和類的成員,要如何使用它們呢?通過java類的實例化,即創建類的對象。一般開發中,

?先去找具有所需功能的對象來用
?如果該對象不存在,那么創建一個具有所需功能的對象
?這樣簡化開發并提高復用

類和對象的關系:

這里寫圖片描述

通過對象實例使用類和類的成員:

?使用new +構造器創建一個新的對象;
?使用“對象名.對象成員”的方式訪問對象成員(包括屬性和方法);
?如果創建了一個類的多個對象,對于類中定義的屬性,每個對象都擁有各自的一套副本,且互不干擾。
?在一個類中:類中的方法可以直接訪問類中的成員變量或其它方法。(例外:static方法訪問非static,編譯不通過。)

2.面向對象的三大特征

?封裝 (Encapsulation)
?繼承 (Inheritance)
?多態 (Polymorphism)

封裝 (Encapsulation)

使用者對類內部定義的屬性(對象的成員變量)的直接操作會導致數據的錯誤、混亂或安全性問題,如:

這里寫圖片描述

Java中通過將數據聲明為私有的(private),再提供公共的(public)方法:getXxx()和setXxx()實現對該屬性的操作,以實現下述目的:

?隱藏一個類中不需要對外提供的實現細節;
?使用者只能通過事先定制好的方法來訪問數據,可以方便地加入控制邏輯,限制對屬性的不合理操作;
?便于修改,增強代碼的可維護性;

public class Animal{
   //將屬性legs定義為private,只能被Animal類內部訪問
   private int legs;
   //定義方法 eat() 和 move()
   public void setLegs(int i){ 
      if (i != 0 && i != 2 && i != 4){
         System.out.println("Wrong number of legs!");
         return;
      }
      legs=i;
   }
   public int getLegs(){
      return legs;
   }
}

public class Zoo{ public static void main(String[] args){ Animal xb=new Animal(); xb.setLegs(4); //xb.setLegs(-1000); xb.legs=-1000; //非法 System.out.println(xb.getLegs()); } }</pre>

四種訪問權限修飾符:

這里寫圖片描述

繼承 (Inheritance)

多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那么多個類無需再定義這些屬性和行為,只要繼承那個類即可。此處的多個類稱為子類,單獨的這個類稱為父類(基類或超類)。可以理解為:“子類 is a 父類”。

這里寫圖片描述

類繼承語法規則: class Subclass extends Superclass{ }

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

多態 (Polymorphism)

多態性,是面向對象中最重要的概念,在java中有兩種體現:

1. 方法的重載(overload)和重寫(overwrite)。
2. 對象的多態性 :父類的引用指向子類對象實體(可以直接應用在抽象類和接口上)

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

3.其它關鍵字

?this
?super
?static
?final
?abstract
?interface

關鍵字this

this是什么?
this表示當前對象,可以調用類的屬性、方法和構造器。當在方法內需要用到調用該方法的對象時,就用this。

?它在方法內部使用,即這個方法所屬對象的引用;
?它在構造器內部使用,表示該構造器正在初始化的對象。

這里寫圖片描述

這里寫圖片描述

關鍵字super

這里寫圖片描述

這里寫圖片描述

關鍵字static

當我們編寫一個類時,其實就是在描述其對象的屬性和行為,而并沒有產生實質上的對象,只有通過new關鍵字才會產生出對象,這時系統才會分配內存空間給對象,其方法才可以供外部調用。

我們有時候希望無論是否產生了對象或無論產生了多少對象的情況下,某些特定的數據在內存空間里只有一份,例如所有的中國人都有個國家名稱,每一個中國人都共享這個國家名稱,不必在每一個中國人的實例對象中都單獨分配一個用于代表國家名稱的變量。

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

關鍵字final

在Java中聲明類、屬性和方法時,可使用關鍵字final來修飾,表示“最終”。

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

抽象類(abstract class)

隨著繼承層次中一個個新子類的定義,類變得越來越具體,而父類則更一般,更通用。類的設計應該保證父類和子類能夠共享特征。有時將一個父類設計得非常抽象,以至于它沒有具體的實例,這樣的類叫做抽象類。

這里寫圖片描述

這里寫圖片描述

關鍵字interface(接 口)

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

來自: http://blog.csdn.net/csdnyoyo/article/details/51288039

 本文由用戶 StephaniaBr 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!