Java基礎01 ------ 從HelloWorld到物件導向

來源:互聯網
上載者:User

標籤:

Java是完全物件導向的語言。Java通過虛擬機器的運行機制,實現“跨平台”的理念。我在這裡想要呈現一個適合初學者的教程,希望對大家有用。

 

"Hello World!"

先來看一個HelloWorld.java程式。這個程式在螢幕上列印出一串字元"Hello World!":

public class HelloWorld{    public static void main(String[] args)    {        System.out.println("Hello World!");    }}

程式中包括Java的一些基本特徵:

  • 類(class):上面程式定義了一個類HelloWorld,該類的名字與.java檔案的名字相同。
  • 方法(method):類的內部定義了該類的一個方法main。
  • 語句(statement):真正的“列印”功能由一個語句實現,即: System.out.println("Hello World!");

 

下面兩點有關Java的書寫方式:

  • Java中的語句要以;結尾 (與C/C++相同)。
  • 用花括弧{}來整合語句,形成程式塊。通過程式塊,我們可以知道程式的不同部分的範圍,比如類從哪裡開始,到哪裡結束。

 

編譯與運行

Java程式要經過編譯器編譯才能執行。在Linux或Mac下,可以下載安裝Java JDK。

 

使用javac來編譯。在命令列中輸入下面語句編譯:

$javac HelloWorld.java

當前路徑下,將有一個名為HelloWorld.class的檔案產生。

 

使用java命令來運行。Java會搜尋該類中的main方法,並執行。

$java HelloWorld

 

 

變數

電腦語言通常需要在記憶體中存放資料,比如C語言中的變數,Java也有類似的變數。Java和C語言都是靜態類型的語言。在使用變數之前,要聲明變數的類型。

 

變數(variable)佔據一定的記憶體空間。不同類型的變數佔據不同的大小。Java中的變數類型如下:

          儲存大小     例值     注釋

byte      1byte        3      位元組

int       4bytes       3      整數

short     2bytes       3      短整數

long      8bytes       3      長整數

float     4bytes     1.2      單精確度浮點數

double    8bytes     1.2      雙精確度浮點數

char      2bytes     ‘a‘      字元

boolean   1bit      true      布爾值

 

在Java中,變數需要先聲明(declare)才能使用。在聲明中,我說明變數的類型,賦予變數以特別名字,以便在後面的程式中調用它。你可以在程式中的任意位置聲明變數。 比如:

public class Test{    public static void main(String[] args)    {        System.out.println("Declare in the middle:");        int a;        a = 5;        System.out.println(a);  // print an integer    }}

上面a是變數名。可以在聲明變數的同時,給變數賦值,比如 int a = 5;

*** “變數”的概念實際上來自於面向過程的程式設計語言。在Java中,所謂的變數實際上是“基本類型” (premitive type)。我們將在類的講解中更多深入。

 

上面的程式還可以看到,Java中,可用//引領注釋。

 

數組

Java中有數組(array)。數組包含相同類型的多個資料。我用下面方法來聲明一個整數數組:

int[] a;

 

在聲明數組時,數組所需的空間並沒有真正分配給數組。我可以在聲明的同時,用new來建立數組所需空間:

int[] a = new int[100];

這裡建立了可以容納100個整數的數組。相應的記憶體配置也完成了。

 

我還可以在聲明的同時,給數組賦值。數組的大小也同時確定。

int[] a = new int[] {1, 3, 5, 7, 9};

 

使用int[i]來調用數組的i下標元素。i從0開始。

其他類型的數組與整數數組相似。

 

運算式

運算式是變數、常量和運算子的組合,它表示一個資料。1 + 1是常見的運算式。再比如:

public class Test{    public static void main(String[] args)    {        System.out.println("Declare in the middle:");        int a;        a = 5 + 1;        System.out.println(a);  // print an integer    }}

上面的5 + 1也是一個運算式,等於6。 

 

數學運算式

數學運算,結果為一個數值

1 + 2                  加法

4 - 3.4                減法

7 * 1.5                乘法

3.5 / 7                除法

7 % 2                  求餘數

 

關聯運算式

判斷運算式是否成立。即一個boolean值,真假

a > 4.2                大於

3.4 >= b               大於等於

1.5 < 9                小於

6 <= 1                 小於等於

2 == 2                 等於

2 != 2                 不等於

 

布林運算式

兩個boolean值的與、或、非的邏輯關係

true && false          and

(3 > 1) || (2 == 1)    or

!true                  not

 

位元運算

對整數的二進位形式逐位進行邏輯運算,得到一個整數

&                      and

|                      or

^                      xor

~                      not

5 << 3                 0b101 left shift 3 bits

6 >> 1                 0b110 right shift 1 bit

 

還有下列在C中常見的運算子,我會在用到的時候進一步解釋:

m++                    變數m加1

n--                    變數n減1

condition ? x1 : x2   condition為一個boolean值。根據condition,取x1或x2的值

 

控制結構

Java中控制結構(control flow)的文法與C類似。它們都使用{}來表達隸屬關係。

 

選擇 (if)

if (conditon1) {    statements;
...}else if (condition2) { statements;
...}else { statements;
...}

上面的condition是一個表示真假值的運算式。statements;是語句。

 

練習 寫一個Java程式,判斷2013年是否是閏年。

 

迴圈 (while)

while (condition) {

    statements;

}

 

迴圈 (do... while)

do {

    statements;

} while(condition);  // 注意結尾的;

 

迴圈 (for)

for (initial; condition; update) {

    statements;

}

 

跳過或跳出迴圈

在迴圈中,可以使用

break; // 跳出迴圈

continue; // 直接進入下一環

 

練習 寫一個Java程式,計算從1加2,加3…… 一直加到999的總和

 

選擇 (switch)

switch(expression) {

    case 1:

        statements;

        break;

    case 2:

        statements;

        break;

    ...

    default:

        statements;

        break;

}

 

物件導向

“對象”是電腦抽象世界的一種方式。“物件導向”可以用很多方式表達。下面是一種並不精確,但比較直觀的理解方式:

  1. 世界上的每一個事物都可以稱為一個對象(object),比如張三。對象有身份(Identity),狀態(State)和行為(Behavior)。
  2. 對象的狀態由資料成員(data member)表示。資料成員又被稱作域(field)。我們用其他對象作為該對象的資料成員。比如一個表示身高的整數,比如一個鼻子。
  3. 對象的行為由成員方法(member method)表示。我們簡稱為方法(method)。一個對象可以有多個方法,比如呼吸,睡覺。
  4. 對象可以歸類(class),或者說歸為同一類型(type)。同一類型的對象有相同的方法,有同類型的資料成員。某個類型的一個對象被稱為該類型的一個執行個體(instance)。

 

類與對象

 

 

定義類的文法:

class ClassName

{

    member1;

    member2;

    ...

}

 

我們定義一個human類:

class Human {    void breath()    {        System.out.println("hu...hu...");    }
int height;}

在{}範圍內,Human類有兩個成員: 一個資料成員height,一個方法breath()。

  • 資料成員height是整數類型,可以用於儲存一個整數。
  • 方法代表了對象所能進行的動作,也就是電腦所能進行的操作。方法可以接受參數,並能傳回值。在breath()的定義中,breath後面的()中為參數列表。由於參數列表為空白,所以breath()不接受參數。在breath()之前的void為傳回值的類型,說明breath不傳回值。

(方法與面向過程語言中的函數類似) 

 

現在,我們建立對象aPerson,並調用對象的方法breath:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human();        aPerson.breath();
System.out.println(aPerson.height); }}class Human{ void breath() { System.out.println("hu...hu..."); } int height;}

在main方法中,使用new關鍵字建立對象。即使是來自同一個類的對象,各個對象佔據的記憶體也不相同,即對象的身份也不同。

Human aPerson聲明了aPerson對象屬於Human類,即說明了對象的類型。

 

對象建立後,我們可以用 對象.資料成員 來引用資料成員,使用 對象.方法() 的方式來調用方法。正如我們在後面列印aPerson.height。

 

總結

Java的許多文法形式與C/C++類似,但在細節和具體實現上又有差別,需要小心。

對象,類

對象: 方法,域(資料成員)

Java是完全物件導向的語言。

Java基礎01 ------ 從HelloWorld到物件導向

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.