Java快速入門


初學者快速學習Java

1- 介紹

2- 建立Java工程

3- 原始資料型別

4- 變數

5- 控制流程

5.1- if-else語句

5.2- 一般操作符

5.3- 布林值

5.4- switch- case -default語句

5.5- for迴圈

5.6- while迴圈

5.7- do-while迴圈

6- Java陣列

6.1-什麼是陣列?

6.2- 使用陣列

7- 類,承,構造器

8- 欄位

9- 方法

10- Java繼承

1- 介紹

首先,學習Java需要什麼,先閱這裡,這裡列出一些開發工具和環境組態:

2- 建立一個工程

首先,我們使用Eclipse(注意就是Eclise,如果沒有安裝好,選安裝好再接著下一個步驟)建立一個新的專案,這將在本教學中使用。

輸入專案名稱:
  • BasicJavaTutorial

專案已建立:

註:為了能夠在除英語工程其他語言可以使用,應該切換到UTF-8編碼。
右鍵單擊該專案並選擇屬性:


3- 原始資料型別

JAVA中有八種基本型別
  • 對於整數有4種型別:byte, short, int, long
  • 實數型別: float, double
  • 字元型別: char
  • 布林: 返回 truefalse 值 (true 或 false)
型別 描述 bit 最小值 最大值
byte
8位元整數
8  -128 (-2^7) 127 (2^7-1)
short
16位元整數
16 -32,768 (-2^15) 32,767 (2^15 -1)
int
32位元整數
32 - 2,147,483,648
(-2^31)
2,147,483,647
(2^31 -1)
long
64位元整數
64 -9,223,372,036,854,775,808
(-2^63)
9,223,372,036,854,775,807
(2^63 -1)
float
32位元實數
32 -3.4028235 x 10^38 3.4028235 x 10^38
double
64位元實數
64 -1.7976931348623157 x 10^308 1.7976931348623157 x 10^308
boolean
邏輯型別

false true
char
字元
16 '\u0000' (0) '\uffff' (65,535).

4- 變數

右鍵點選 src 並選擇 "New/Package":

新建命名包是:
  • com.yiibai.tutorial.javabasic.variable

選擇上面建立的包名 com.yiibai.tutorial.javabasic.variable,在彈出的選單中選擇 New 中選擇 Class。
輸入類的名稱:
  • VariableExample1

建立 VariableExample1 類如下:

  • VariableExample1.java
package com.yiibai.tutorial.javabasic.variable;

public class VariableExample1 {

    public static void main(String[] args) {

        // Declare a variable of type int (integer 32-bit)
        int firstNumber;

        // Assigning values to firstNumber
        firstNumber = 10;

        System.out.println("First Number =" + firstNumber);

        // Declare a 32-bit real number (float)
        // This number is assigned a value of 10.2
        float secondNumber = 10.2f;

        System.out.println("Second Number =" + secondNumber);

        // Declare a 64-bit real numbers
        // This number is assigned a value of 10.2
        // character d at the end to tell with Java this is the type double.
        // Distinguished from a float.
        double thirdNumber = 10.2d;

        System.out.println("Third Number =" + thirdNumber);

        // Declare a character
        char ch = 'a';

        System.out.println("Char ch= " + ch);

    }
}
執行類 VariableExample1:
在 VariableExample1 類右鍵單擊選擇 "Run As/Java Application":

執行類,在控制台上看到的結果如下:

您也可以一次宣告多個變數,下例說明了這一點:
建立一個新的類 VariableExample2

  • VariableExample2.java
package com.yiibai.tutorial.javabasic.variable;

public class VariableExample2 {

    public static void main(String[] args) {

        // Declare three 64-bit integer (long)
        long firstNumber, secondNumber, thirdNumber;

        // Assign value to firstNumber
        // L at the end to tell java a long type, distinguished from type int.
        firstNumber = 100L;

        // Assign values to secondNumber
        secondNumber = 200L;

        // Assign values to thirdNumber
        thirdNumber = firstNumber + secondNumber;

        System.out.println("First Number = " + firstNumber);
        System.out.println("Second Number = " + secondNumber);
        System.out.println("Third Number = " + thirdNumber);
    }

}
執行類 VariableExample2 的結果 :

5- 控制流

5.1- if-else語句

if-else 語句的結構是:
if(condition1 true)  {
 // Do something here
}elseif(condition2 true) {
 // Do something here
}elseif(condition3 true) {
 // Do something here
}else  { // Other
 // Do something here
}
建立一個類 ElseIfExample1:

  • ElseIfExample1.java
package com.yiibai.tutorial.javabasic.controlflow;

public class ElseIfExample1 {

    public static void main(String[] args) {

        // Declaring a integer number (int)        
        int score = 20;

        System.out.println("Your score =" + score);

        // If the score is less than 50
        if (score < 50) {
            System.out.println("You are not pass");
        }

        // Else if the score more than or equal to 50 and less than 80.
        else if (score >= 50 && score < 80) {
            System.out.println("You are pass");
        }

        // Remaining cases (that is greater than or equal to 80)
        else {
            System.out.println("You are pass, good student!");
        }

    }
}
執行 ElseIfExample1 類的結果:

改變在上面的例子中,變數「score」的值,然後重新執行ElseIfExample1類:
int score = 80;

5.2- 常規操作符

  • > 大於號
  • < 小於號
  • >= 大於或等於
  • <= 小於或等於
  • && 且
  • || 或
  • == 等一個值
  • != 不等於一個值
  • ! 非
建立一個類 ElseIfExample2
  • ElseIfExample2.java
package com.yiibai.tutorial.javabasic.controlflow;

public class ElseIfExample2 {
    public static void main(String[] args) {

        // Declare a variable int simulate your age.
        int age = 20;

        // Test age less than or equal 17
        if (age <= 17) {
            System.out.println("You are 17 or younger");
        }

        // Test age equals 18
        else if (age == 18) {
            System.out.println("You are 18 year old");
        }

        // Test age, greater than 18 and less than 40
        else if (age > 18 && age < 40) {
            System.out.println("You are between 19 and 39");
        }

        // Remaining cases (Greater than or equal to 40)
        else {
            // Nested if statements
            // Test age not equals 50.
            if (age != 50) {
                System.out.println("You are not 50 year old");
            }

            // Negative statements
            if (!(age == 50)) {
                System.out.println("You are not 50 year old");
            }

            // If age is 60 or 70
            if (age == 60 || age == 70) {
                System.out.println("You are 60 or 70 year old");
            }

        }

    }
}
您可以修改 「age」 的值,然後重新執行 ElseIfExample2 類,並檢視結果。

5.3- 布林值

布林是一種資料型別,它只有兩個值true或false。
建立一個類 BooleanExample
  • BooleanExample.java
package com.yiibai.tutorial.javabasic.controlflow;

public class BooleanExample {
    public static void main(String[] args) {

        // Declare a variable of type boolean
        boolean value = true;

        // If value is true
        if (value == true) {
            System.out.println("It's true");
        }
        // Else
        else {
            System.out.println("It's false");
        }

        // With boolean values you can also write
        if (value) {
            System.out.println("It's true");
        }
        // Else
        else {
            System.out.println("It's false");
        }
    }
}

5.4- switch- case -default 語句

這也是類似上面介紹的 if-else 分支語句:
switch( variable_to_test ) {
  casevalue:
   // code_here;
   break;
  casevalue:
   // code_here;
   break;
  default:
   // values_not_caught_above;
}
  • SwitchExample1.java
package com.yiibai.tutorial.javabasic.controlflow;

public class SwitchExample1 {
    public static void main(String[] args) {

        // Declare a variable age
        int age = 20;

        // Check the value of age
        switch (age) {

        // Case age = 18
        case 18:
            System.out.println("You are 18 year old");
            break;

        // Case age = 20
        case 20:
            System.out.println("You are 20 year old");
            break;

        // Remaining cases
        default:
            System.out.println("You are not 18 or 20 year old");
        }

    }
}
執行類 SwitchExample1 的結果 :
You are 20 year old
請注意case語句是一個特定的值,不能做下面的操作:
// This is not allowed !!
case(age < 18) :
 
// case only accept a specific value eg:
case18:
  // Do something here
  break;
看下面的一個例子:
  • SwitchExample2.java
package com.yiibai.tutorial.javabasic.controlflow;

public class SwitchExample2 {
    public static void main(String[] args) {

        // Declare a variable age
        int age = 30;

        // Check the value of age
        switch (age) {

        // Case age = 18
        case 18:
            System.out.println("You are 18 year old");

        // Case age in 20, 30, 40
        case 20:
        case 30:
        case 40:
            System.out.println("You are " + age);
            break;

        // Remaining case:
        default:
            System.out.println("Other age");
        }

    }
}
執行結果:
You are 30

5.5- for迴圈

語法:
for( start_value; end_value; increment_number ) {
  // Code here
}
考慮如下一個例子:
  • ForLoopExample1.java
packagecom.yiibai.tutorial.javabasic.loop;
 
publicclass ForLoopExample1 {
 
    publicstaticvoidmain(String[] args) {
 
        // Declare a variable, step in loop
        intstep = 1;
 
        // Declare a variable value with the start value is 0
        // After each iteration, value will increase 3
        // And the loop will end when the value greater than or equal to 10
        for(intvalue = 0; value < 10; value = value + 3) {
 
            System.out.println("Step ="+ step + "  value = "+ value);
 
            // Increase 1
            step = step + 1;
 
        }
 
    }
 
}
執行 ForLoopExample1 類結果:
Step =1  value = 0
Step =2  value = 3
Step =3  value = 6
Step =4  value = 9
另一範例中,從1至100的數位求和:
  • ForLoopExample2.java
package com.yiibai.tutorial.javabasic.loop;

public class ForLoopExample2 {
    public static void main(String[] args) {
        int sum = 0; for (int i = 0; i <= 100; i = i + 1) {
            sum = sum + i;
        }
       System.out.println(sum); }
}
結果:
5050

5.6- while迴圈

這是 while 迴圈結構:
// While the condition is true, then do something.
while( 條件為真 ) {
  // Do something here.
}
參見圖示
  • WhileExample1.java
publicclassWhileExampe1 {
 
     
    publicstaticvoidmain(String[] args)  {
         
        intvalue = 3;
         
        // While the value is less than 10, the loop is working.
        while( value < 10)  {
             
            System.out.println("Value = "+ value);
             
            // Increase value by adding 2
            value = value + 2;
        }
    }
}

5.7- do-while迴圈

下面是do-while迴圈的結構:
// The do-while loop to work at least one round
// and while the condition is true, it also works to
do{
  // Do something here.
}while( condition );
如下圖的範例:
  • DoWhileExample1.java
package com.yiibai.tutorial.javabasic.loop;

public class DoWhileExample1 {

    public static void main(String[] args) {

        int value = 3;

        // do-while loop will execute at least once
        do {

            System.out.println("Value = " + value);

            // Increase 3
            value = value + 3;

        } while (value < 10);

    }
}
結果:
Value = 3
Value = 6
Value = 9

6- Java陣列

6.1- 什麼是陣列?

陣列是元素儲存在彼此相鄰列表。
讓我們來看看,一個陣列有5個int型的元素。

6.2- 使用陣列

如何在Java中宣告陣列。
// Declare an array, not a specified number of elements.
int[] array1;
 
 
// Initialize the array with 100 elements
// The element has not been assigned a specific value
array1 = newint[100];
 
// Declare an array specifies the number of elements
// The element has not been assigned a specific value
double[] array2 = newdouble[10];
 
// Declare an array whose elements are assigned specific values.
// This array with 4 elements
long[] array3= {10L, 23L, 30L, 11L};
讓我們來看一個例子:
  • ArrayExample1.java
package com.yiibai.tutorial.javabasic.array;

public class ArrayExample1 {

    public static void main(String[] args) {

        // Declare an array with 5 elements
        int[] myArray = new int[5];

        // Note: the first element of the array index is 0:

        // Assigning values to the first element (index 0)
        myArray[0] = 10;

        // Assigning values to the second element (index 1)
        myArray[1] = 14;

        myArray[2] = 36;
        myArray[3] = 27;

        // Value for the 5th element (the last element in the array)
        myArray[4] = 18;

        // Print out element count.
        System.out.println("Array Length=" + myArray.length);

        // Print to Console element at index 3 (4th element in the array)
        System.out.println("myArray[3]=" + myArray[3]);

        // Use a for loop to print out the elements in the array.
        for (int index = 0; index < myArray.length; index++) {
            System.out.println("Element " + index + " = " + myArray[index]);
        }
    }
}
結果:
Array Length=5
myArray[3]=27
Element 0 = 10
Element 1 = 14
Element 2 = 36
Element 3 = 27
Element 4 = 18
舉一個範例來說明使用一個for迴圈來對元素賦值:
  • ArrayExample2.java
package com.yiibai.tutorial.javabasic.array;

public class ArrayExample2 {
    public static void main(String[] args) {

        // Declare an array with 5 elements
        int[] myArray = new int[5];

        // Print out element count
        System.out.println("Array Length=" + myArray.length);

        // Using loop assign values to elements of the array.
        for (int index = 0; index < myArray.length; index++) {
            myArray[index] = 100 * index * index + 3;
        }

        // Print out the element at index 3
        System.out.println("myArray[3] = "+ myArray[3]);
    }
}
輸出結果:
Array Length=5
myArray[3] = 903

7- 類, 繼承, 構造器

有三個概念需要進行區分:
  • 構造
  • 繼承
當我們討論樹,它是抽象的東西,它是一個類。但是,當我們指出了一個特定的樹(比如:檳榔樹),很明顯,那就是範例。
或者,當我們談論的人,這是抽象的,它是一個類。但是,當指向你或我,這是兩種不同的情況下,都是同一個 Person 類。
  • Person.java
package com.yiibai.tutorial.javabasic.javastructure;

public class Person {
    // This is field
    // The name of Person
    public String name;

    // This is a Constructor
    // Use it to initialize the object (Create new object)
    // This constructor has one parameter
    // Constructor always have the same name as the class.
    public Person(String persionName) {
        // Assign the value of the parameter into the 'name' field
        this.name = persionName;
    }

    // This method returns a String ..
    public String getName() {
        return this.name;
    }
}
Person類沒有任何main函式。 TestPerson類通過建構函式初始化Person物件範例
  • PersonTest.java
package com.yiibai.tutorial.javabasic.javastructure;

public class PersonTest {

       public static void main(String[] args) {

           // Create an object of class Person
           // Initialize this object via constructor of class Person
           // Specifically, Edison
           Person edison = new Person("Edison");

           // Class Person has the method getName()
           // Use the object to call getName():
           String name = edison.getName();
           System.out.println("Person 1: " + name);

           // Create an object of class Person
           // Initialize this object via constructor of class Person
           // Specifically, Bill Gates
           Person billGate = new Person("Bill Gates");

           // Class Person has field name (public)
           // Use objects to refer to it.
           String name2 = billGate.name;
           System.out.println("Person 2: " + name2);

       }

    }
執行範例的結果如下:
Person 1: Edison
Person 2: Bill Gates

8- 欄位

在本節中,我們將討論一些概念:
欄位
  • 一般欄位
  • 靜態欄位
  • final欄位
  • static final 欄位
下面看看欄位和靜態欄位的例子。
  • FieldSample.java
package com.yiibai.tutorial.javabasic.javastructure;

public class FieldSample {

    // This is static field.
    public static int MY_STATIC_FIELD = 100;

    // This is normal field.
    public String myValue;


    // Constructor
    public FieldSample(String myValue)  {
        this.myValue= myValue;
    }

}
  • FieldSampleTest.java
package com.yiibai.tutorial.javabasic.javastructure;

public class FieldSampleTest {

    public static void main(String[] args) {

        // Create the first object.
        FieldSample obj1 = new FieldSample("Value1");

        System.out.println("obj1.myValue= " + obj1.myValue);

        // Print out static value, access via instance of class (an object).
        System.out.println("obj1.MY_STATIC_FIELD= " + obj1.MY_STATIC_FIELD);

        // Print out static value, access via class.
        System.out.println("FieldSample.MY_STATIC_FIELD= "
                + FieldSample.MY_STATIC_FIELD);

        // Create second object:
        FieldSample obj2 = new FieldSample("Value2");

        System.out.println("obj2.myValue= " + obj2.myValue);

        // Print out static value, access via instance of class (an object)
        System.out.println("obj2.MY_STATIC_FIELD= " + obj2.MY_STATIC_FIELD);

        System.out.println(" ------------- ");

        // Set new value for static field.
        // (Or using: FieldSample.MY_STATIC_FIELD = 200)
        obj1.MY_STATIC_FIELD = 200;

        // It will print out the value 200.
        System.out.println("obj2.MY_STATIC_FIELD= " + obj2.MY_STATIC_FIELD);
    }
}
執行範例的結果:
obj1.myValue= Value1
obj1.MY_STATIC_FIELD= 100
FieldSample.MY_STATIC_FIELD= 100
obj2.myValue= Value2
obj2.MY_STATIC_FIELD= 100
 ------------- 
obj2.MY_STATIC_FIELD= 200
最後一個欄位是不能一個新值分配給它的,它就像一個常數。
  • FinalFieldExample.java
package com.yiibai.tutorial.javabasic.javastructure;

public class FinalFieldExample {

    // A final field.
    // Final Field does not allow to assign new values.
    public final int myValue = 100;

    // A static final field.
    // Final field does not allow to assign new values.
    public static final long MY_LONG_VALUE = 1234L;
}

9- 方法

有關方法的種類:
  • 方法
  • 靜態方法
  • final 方法 (將在類的繼承中說明)
  • MethodSample.java
package com.yiibai.tutorial.javabasic.javastructure;

public class MethodSample {

    public String text = "Some text";

    // Default Constructor
    public MethodSample()  {

    }

    // This method return a String
    // and has no parameter.
    public String getText() {
        return this.text;
    }

    // This is a method with one parameter String.
    // This method returns void (not return anything)    
    public void setText(String text) {
        // this.text reference to the text field.
        // Distinguish the text parameter.        
        this.text = text;
    }

    // Static method
    public static int sum(int a, int b, int c) {
        int d =  a + b + c;
        return d;
    }
}
  • MethodSampleTest.java
package com.yiibai.tutorial.javabasic.javastructure;

public class MethodSampleTest {

    public static void main(String[] args) {

        // Create instance of MethodSample
        MethodSample obj = new MethodSample();

        // Call getText() method
        String text = obj.getText();

        System.out.println("Text = " + text);

        // Call method setText(String)
        obj.setText("New Text");

        System.out.println("Text = " + obj.getText());

        // Static method can be called through the class.
        // This way is recommended. (**)
        int sum = MethodSample.sum(10, 20, 30);

        System.out.println("Sum  10,20,30= " + sum);

        // Or call through objects
        // This way is not recommended. (**)        
        int sum2 = obj.sum(20, 30, 40);

        System.out.println("Sum  20,30,40= " + sum2);
    }

}
執行上面的程式輸出結果如下:
Text = Some text
Text = New Text
Sum  10,20,30= 60
Sum  20,30,40= 90

10- 在Java中的繼承

Java允許從其他類擴充套件類。類擴充套件另一個類稱為子類。 子類必須有繼承父類別中的欄位和方法的能力。
  • Animal.java
package com.yiibai.tutorial.javabasic.inheritance;

public class Animal {

    public Animal() {

    }

    public void move() {
        System.out.println("Move ...!");
    }

    public void say() {
        System.out.println("<nothing>");
    }

}
  • Cat.java
package com.yiibai.tutorial.javabasic.inheritance;

public class Cat extends Animal {

    // Override method of the Animal class.
    public void say() {
        System.out.println("I am Cat");
    }

}
  • Dog.java
package com.yiibai.tutorial.javabasic.inheritance;

public class Dog extends Animal {

    // Override method of the Animal class.
    public void say() {
        System.out.println("I am Dog");
    }
}
  • Ant.java
package com.yiibai.tutorial.javabasic.inheritance;

public class Ant extends Animal {

}
  • AnimalTest.java
package com.yiibai.tutorial.javabasic.inheritance;

public class AnimalTest {

    public static void main(String[] args) {

        // Declaring a Cat object.
        Cat cat = new Cat();

        // Check 'cat' instance of Animal.
        // The result is clearly true.
        boolean isAnimal = cat instanceof Animal;
        System.out.println("cat instanceof Animal?"+ isAnimal);

        // ==> Meo
        // Call the method say() of the Cat.
        cat.say();


        // Declare an object Animal
        // Initialize the object through the Constructor of the Cat.
        Animal cat2 = new Cat();

        // ==> Meo
        // Call to say() of Cat (Not Animal)
        cat2.say();

        // Create the object Animal
        // Through the Constructor of the class Ant.        
        Animal ant = new Ant();

        // Ant has no say() method.
        // It call to say() method that inherited from the parent class (Animal)        
        ant.say();
    }
}
執行範例的結果如下:
cat instanceof Animal?true
I am Cat
I am Cat
<nothing>