Java基礎01 從HelloWorld到物件導向
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下,可以下載安裝 。
使用 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;
}
物件導向
“物件”是計算機抽象世界的一種方式。“物件導向”可以用很多方式表達。下面是一種並不精確,但比較直觀的理解方式:
- 世界上的每一個事物都可以稱為一個 物件(object),比如張三。物件有 身份(Identity), 狀態(State)和 行為(Behavior)。
- 物件的狀態由 資料 成員(data member)表示。資料成員又被稱作 域(field)。我們用其他物件作為該物件的資料成員。比如一個表示身高的整數,比如一個鼻子。
- 物件的行為由 成員方法(member method)表示。我們簡稱為 方法(method)。一個物件可以有多個方法,比如 呼吸,睡覺。
- 物件可以歸 類(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是完全物件導向的語言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2663674/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA(一)JAVA基礎/物件導向基礎/高階物件導向Java物件
- Java基礎-物件導向基礎Java物件
- JAVA物件導向基礎Java物件
- 【Java 基礎】——物件導向Java物件
- Java基礎 --- 物件導向Java物件
- JAVA物件導向基礎--物件導向介紹Java物件
- java基礎二:物件導向Java物件
- 從程式導向到物件導向物件
- 【Java基礎】物件導向開發Java物件
- (Java筆記)物件導向基礎Java筆記物件
- 【Java基礎】--再談物件導向Java物件
- JAVA物件導向基礎--異常Java物件
- 物件導向基礎物件
- Java 基礎(一)重新理解物件導向Java物件
- java基礎 - 物件導向三大特性Java物件
- Java基礎 --- 物件導向綜合訓練Java物件
- 從 Java 到 Scala(一):物件導向談起Java物件
- PHP物件導向基礎PHP物件
- 從物件導向到模式再到真正的物件導向 (轉)物件模式
- PHP 物件導向基礎概念PHP物件
- python物件導向[基礎]Python物件
- 12 物件導向基礎-1物件
- Golang 基礎之物件導向Golang物件
- 【Java基礎知識】物件導向有哪些特性Java物件
- 『Java 語法基礎』物件導向有哪些特性Java物件
- JAVA物件導向基礎--N種內部類Java物件
- Java零基礎學習之路(八)Java物件導向Java物件
- 夯實Java基礎系列1:Java物件導向三大特性(基礎篇)Java物件
- 老王的JAVA基礎課:第5課 物件導向Java物件
- Android探索之旅 | 物件導向和Java基礎Android物件Java
- JAVA物件導向基礎--封裝 繼承 多型Java物件封裝繼承多型
- 「MoreThanJava」Day 4:物件導向基礎Java物件
- 面向Python,物件導向(基礎)Python物件
- PHP基礎之物件導向篇PHP物件
- Python基礎之物件導向Python物件
- php基礎語法_物件導向PHP物件
- Java常見知識點彙總(③)——物件導向基礎Java物件
- 零基礎學Java第六節(物件導向二)Java物件