Java基礎01 從HelloWorld到面向對象

做者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!html

 

Java是徹底面向對象的語言。Java經過虛擬機的運行機制,實現「跨平臺」的理念。我在這裏想要呈現一個適合初學者的教程,但願對你們有用。java

 

"Hello World!"

先來看一個HelloWorld.java程序。這個程序在屏幕上打印出一串字符"Hello World!":express

1 public class HelloWorld 2 { 3     public static void main(String[] args) 4  { 5         System.out.println("Hello World!"); 6  } 7 }

 

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

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

 

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

  • Java中的語句要以;結尾 (與C/C++相同)。
  • 用花括號{}來整合語句,造成程序塊。經過程序塊,咱們能夠知道程序的不一樣部分的範圍,好比類從哪裏開始,到哪裏結束。

 

編譯與運行

Java程序要通過編譯器編譯才能執行。在Linux或Mac下,能夠下載安裝Java JDKoracle

 

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

$javac HelloWorld.java

當前路徑下,將有一個名爲HelloWorld.class的文件生成。編程語言

 

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

$java HelloWorld

 

變量

計算機語言一般須要在內存中存放數據,好比C語言中的變量,Java也有相似的變量。Java和C語言都是靜態類型的語言。在使用變量以前,要聲明變量的類型。spa

 

變量(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)才能使用。在聲明中,我說明變量的類型,賦予變量以特別名字,以便在後面的程序中調用它。你能夠在程序中的任意位置聲明變量。 好比:

 1 public class Test
 2 {
 3     public static void main(String[] args)
 4     {
 5         System.out.println("Declare in the middle:");
 6         int a;
 7         a = 5;
 8         System.out.println(a);  // print an integer
 9     }
10 }

  

上面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是常見的表達式。再好比:

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

上面的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)

 1 if (conditon1) {
 2     statements;
 3     ...
 4 }
 5 else if (condition2) {
 6     statements;
 7     ...
 8 }
 9 else {
10     statements;
11     ...
12 }

上面的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類:

1 class Human 
2 {
3     void breath()
4     {
5         System.out.println("hu...hu...");
6     }
7 
8     int height;
9 }

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

  • 數據成員height是整數類型,能夠用於存儲一個整數。
  • 方法表明了對象所能進行的動做,也就是計算機所能進行的操做。方法能夠接受參數,並能返回值。在breath()的定義中,breath後面的()中爲參數列表。因爲參數列表爲空,因此breath()不接受參數。在breath()以前的void爲返回值的類型,說明breath不返回值。

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

 

如今,咱們建立對象aPerson,並調用對象的方法breath:

 1 public class Test
 2 {
 3     public static void main(String[] args)
 4     {
 5         Human aPerson = new Human();
 6         aPerson.breath();
 7         System.out.println(aPerson.height);
 8     }
 9 
10 }
11 
12 class Human
13 {
14     void breath()
15     {
16        System.out.println("hu...hu...");
17     }
18 
19     int height;
20 }

 

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

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

 

對象創建後,咱們能夠用 對象.數據成員 來引用數據成員,使用 對象.方法() 的方式來調用方法。正如咱們在後面打印aPerson.height。

 

總結

Java的許多語法形式與C/C++相似,但在細節和具體實現上又有差異,須要當心。

對象,類

對象: 方法,域(數據成員)

Java是徹底面向對象的語言。

 

歡迎繼續閱讀「Java快速教程」系列文章

相關文章
相關標籤/搜索