[Java] Introduction to Java Programming 筆記: Chapter 2. 基礎

2222345345發表於2018-08-31
  • 每個Java程式必須有一個main作為程式執行的入口。
  • System.out指向輸出,System.in指向輸入, 從鍵盤獲得輸入的方法:
import java.util.Scanner;
Scanner input = new Scanner(System.in);
double x = input.nextDouble(); // 讀取一個double
  • 計算3個數的平均數的例子, ComputeAverage.java:
import java.util.*;
public class ComputeAverage {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter three numbers: ");
        double num1 = input.nextDouble();
        double num2 = input.nextDouble();
        double num3 = input.nextDouble();
        System.out.println("The average of three numbers: " + (num1 + num2 + num3) / 3);
    }
}
  • 下面的兩種寫法,沒有任何效能差別:
import java.util.Scanner;
import java.util.*;
  • Java的識別符號可以有$字元,但是不要使用$,因為這個字元依照慣例僅用於自動生成的原始碼,除此之外,識別符號的命名規則和C,C++一樣。

  • 變數的宣告和初始化:
    int i = 1, j = 2;

  • 宣告常量的語法如下, C++ 裡的const 改成了關鍵字final

final datatype CONSTANTNAME = value;
  • 常量宣告的同時必須初始化,例如:
final double PI = 3.14159; 
  • 命名慣例:
    變數,方法小寫,連線起來的第二個單詞首字母大寫
    類名首字母大寫
    常量名所有字母大寫,單詞之間使用下劃線連線,例如: PIMAX_VALUE.
public static void main(String[] args) {
    double miles = 100;
    final double KILOMETERS_PER_MILE = 1.609;
    double kilometers = miles * KILOMETERS_PER_MILE;
    System.out.println(kilometers);
}
  • Java 有 6種數字資料型別: byte, short, int, long, float, double, 位數為 8, 16, 32, 64, 32-bit IEEE 754, 64-bit IEEE 754, 全部都是有符號,可表示正數,也可表示負數。前4種表示整數,後兩種表示浮點,doublefloat更精確,一般應選double為資料型別。

  • 從鍵盤讀取數字,Scanner 物件的6種方法:

Method Description
nextByte() 讀取byte整型.
nextShort() 讀取short整型.
nextInt() 讀取int整型.
nextLong() 讀取long整型.
nextFloat() 讀取float型別值.
nextDouble() 讀取double型別值.

- %運算子可用於負數,結果的符合與左運算元相同(dividend)。
- 指數運算: Math.pow(a, b)
- 整形字面值:如果表示的數太大,超過int表示範圍,則在數字後面加L或l,表示為long型別,通常用大寫的L,小寫的l很容易和數字1看混淆。
- 在數字前加0b或0B表示為二進位制數,加0表示8進位制數,加0x或0X表示16進位制數。

System.out.println(0B1111); // Displays 15
System.out.println(07777); // Displays 4095
System.out.println(0XFFFF); // Displays 65535
  • 浮點字面值預設情況下看作double,而非float,例如 5.0 就被看作double,如果要指定數值是float還是double,可以在數字後面加 f, F, 或 d,D,例如 100.2f, 100.2D, doublefloat 更精確。
  • 科學計數: 50.534 -> 5.0534E+1, float 或 double 之所以被稱為浮點,是因為內部以科學計數法儲存,小數點移動到了新的位置(float)。
  • 為提高可讀性,Java 允許在字面值之間加下劃線,但是隻能是在兩個數的中間。45_ 或 _45都不對,如下, 但是這一個語法只有 1.7 及以上才支援。
long ssn = 232_45_4519;
long creditCardNumber = 2324_4545_4519_3415L;
  • How many accurate digits are stored in a float or double type variable? I dont know.
  • 顯示當前時間,這時間和電腦上的一模一樣:
public class ShowCurrentTime {
    public static void main(String[] args) {
        long total = System.currentTimeMillis();
        long totalSeconds = total / 1000;
        long currentSecond = totalSeconds % 60;
        long totalMinutes = totalSeconds / 60;
        long currentMinute = totalMinutes % 60;
        long totalHours = totalMinutes / 60;
        long currentHour = (totalHours + 8) % 24;
        System.out.println("Current Time: " + currentHour + ":"
                + currentMinute + ":" + currentSecond);         
    }
}
// output: Current Time: 15:9:29
  • x /= 4 + 5.5 * 1.5; 等同於 x = x / (4 + 5.5 * 1.5); /= 最後執行。

  • i++ 讀作 i plus plus ,i— — as i minus minus, 先加後減這些,和 C/C++ 裡的完全一樣。實際中 int k = ++i + i; 這樣的寫法不是好的寫法,看起來麻煩,容易出錯。

  • Java 裡的6種數值型別的表數範圍有的窄,有的寬。如果將窄型別的值賦給寬型別的值,Java會自動進行型別轉換,叫做拓寬型別(widening a type), 反過來縮窄型別(narrowing a type)則需要進行顯式資料型別轉換,其他的和C/C++ 一樣。

int i = 1;
byte b = i; // 錯誤,要求顯式轉換
  • 關於近似值,浮點近似儲存,但整數精確儲存,因此整數計算能得到精確的結果。

相關文章