2 基本資料型式(Data Type)

2.1 數值型式

每一變數都具有資料型式。 界定一個變數,必須定其型式及名稱,同時也可規定其初值。 例如,
        int pennies = 4;

例題:Coins1.java

數值值域(Range)與精確度(Precision)

註解

單列註解用 //, 多列註解用一對 /* */。

2.2 輸入(input) and 輸出(output)敘述

輸出可用類別(class) System.out 的 println 或 print 方法, 如
        System.out.println(total);

Java 的輸入比較複雜, 需藉助另一類別(非標準) ConsoleReader。 ConsoleReader 可使用的方法有:

        readInt()      閱讀 int 資料
        readDouble()   閱讀 double 資料
        readLine()     閱讀整列字串

用法:

   ConsoleReader console = new ConsoleReader(System.in);

   int n = console.readInt();         // read an integer
   double x = console.readDouble();   // read a floating-point number
   String line = console.readLine();  // read a line of input

例題:Coins3.java(修改過的課本例題)

注意:編譯 Coins3.java 程式時,必須找得到 ConsoleReader.class。 (下載 ConsoleReader.java 到 Coins3.java 所在的目錄, 再編譯為 ConsoleReader.class。)

2.3 指定(assignment)敘述

        v = exp;

v 為變數, 而 exp 為陳式(expression)。 陳式是由運算元(operand)和運算子(operator)組成。 運算元可以是變數或常數。 變數在使用前,必須先宣告其資料型式。

複合(Compound) 敘述

幾個敘述可用一對 { } 括起來,當做一個敘述使用。 例如:
    if (g >= 60) 
    {   System.out.println("Passed");
        Passed="1;" 
    }

例題:Coins4.java(修改過的課本例題)

2.4 常數(Constant)

例題:

  1. Without constants : Volume1.java(修改過的課本例題)
  2. With constants : Volume2.java(修改過的課本例題)

2.5 算術 (Arithmetic)運算

算術運算子

運算 運算子 例子
  + i + 9
  - a - c
  * a * b
  / x / y
整數除   % r % s

例題:Coins5.java(修改過的課本例題)

運算優先次序(Precedence)

        ()
        * / %
        + -
數學函數(Mathematical Functions)

2.6 字串(Strings)

2.6.1 字串變數

     String name = "John";

     ConsoleReader console = new ConsoleReader(System.in);
     name = console.readLine();	

字串的長度是指其中的字元(character)個數, 如

     int n = name.length();

長度為零的字串, 稱為 empty string, 用 "" 表示。

2.6.2 Substring

抽取字串的一部分, 用 substring 運算:
    String greeting = "Hello, World!";
    String hello = greeting.substring(0,4);

2.6.3 String Concatenation

連接襾字串, 用運算子 + :
    String fname = "Harry";
    String lname = "Hacker";
    String name = fname + " " + lname;

例題:Initials.java(修改過的課本例題)

2.6.4 String Conversion

字串中字母大小寫的轉換, 用下列函數:
    toUpperCase()
    toLowerCase()

例題:MakePass.java(修改過的課本例題)

2.7 用標準爪哇閱讀輸入的資料

2.7.1 轉換 Stream 為 Reader

input stream 用以閱讀位元組(byte), 而 reader 用以閱讀字元(character)。
   InputStreamReader reader = new InputStreamReader(System.in);

另一 BufferedReader 類別(class)用以將 input reader 轉換成可以一次閱讀一整列字串的 input reader。

用法如下:

   BufferedReader console = new BufferedReader(reader);

   System.out.println("What is your name?");
   String name = console.readLine();

2.7.2 Handling Input/Output Exceptions

   import java.io.InputStreamReader;
   import java.io.BufferedReader;
   import java.io.IOException;
   
   public class MyProgram
   {  public static void main(String[] args)
      {  try
         {  InputStreamReader reader = new InputStreamReader(System.in);
            BufferedReader console = new BufferedReader(reader);
			
            statement
            statement
            ...
         }
         catch(IOException e)
         {  System.out.println(e);
            System.exit(1);
         }
      }
   }