2013年10月4日 星期五

運算式與運算子

算術相關的運算子+、-、*、/,也就是加、減、乘、除這類運算子,另外%,稱為模數運算子或餘除運算子。嘗試下列程式碼是否與預期的結果一致

System.out.println(1 + 2 * 3);
System.out.println(2 + 2 + 8 / 4);
System.out.println(10 % 3);

  • 算術運算子使用上與你學過的加減乘除一樣,也是先乘除後加減。 

比較、條件運算 

數學上有大於、等於、小於的比較運算,Java中也提供了這些運算子,這些運算子稱之為比較運算子,它們有大於、不小於、小於、不大於、等於以及不等於,比較條件成立時以boolean型態true表示,比較條件不成立時以false表示。嘗試下列程式碼是否與預期的結果一致
System.out.printf("10 >  5 結果為 "+ (10 > 5)); 
System.out.printf("10 >= 5 結果為 "+ (10 >= 5)); 
System.out.printf("10 <  5 結果為 "+ (10 < 5)); 
System.out.printf("10 <= 5 結果為 "+ (10 <= 5)); 
System.out.printf("10 == 5 結果為 "+ (10 == 5)); 
System.out.printf("10 != 5 結果為 "+ (10 != 5));

  • 字串與運算結果相加時,需以括號分隔。 
  • ==是兩個連續的=組成,而不是一個=,一個=是指定運算,這點必須特別注意。例如若變數x與y要比較是否相等,應該是寫成x == y,而不是寫成x = y。後者作用是將y的值指定給x,而不是比較運算x與y是否相等。對於類別型態宣告的參考名稱來說,兩個參考名稱使用==比較時,是比較兩個名稱是否參考至同一物件,之後介紹物件會再詳細介紹。 

字串比較 

String 型別的字串內容時,應使用 equals()方法。  因為若用new改寫內容時,會造成記憶體位址不符,嘗試下列程式碼是否與預期的結果一致 。

String str1 = "hello";
String str2 = new String("hello");
String str3 = "hello";  

System.out.println(str1+", "+str2+", "+str3);
System.out.println(str1 == str2);
System.out.println(str1 == str3);

雖然實作上不常使用new String的方式創建字串,但是習慣上都會以equals比對字串。
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));

型態轉換

基本資料型態轉換成字串

String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法
也就是 String.valueOf() 這個參數多載的方法

String.valueOf(boolean b);//將 boolean 變數 b 轉換成字串
String.valueOf(char c);//將char 變數 c 轉換成字串
String.valueOf(Object o);//將Object變數 o 轉換成字串

字串轉換成 數字的基本資料型態

要將 String 轉換成基本資料型態轉
需要使用基本資料型態的包裝類別

如 String 轉換成 Integer可以使用 Integer.parseInteger(String s)
Double.parseDouble(String s);//將 s 轉換成 double
Double.parseFloat(String s);//將 s 轉換成 float
Integer.parseInt(String s);//將 s 轉換成 int

注意: 數值與字串在同1行顯示時,數值的部份請用括號包起來。例如"str"+1=2必須要寫成"str"+(1+2),沒有括號包起來會全部被視為字串相加。

綜合練習

利用鍵盤輸入2筆資料,將結果運算並顯示。
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
  System.out.print("請輸入一個數字: ");
  int num1 = Integer.parseInt(buf.readLine());
  System.out.print("請輸入一個數字: ");
  int num2 = Integer.parseInt(buf.readLine());
  System.out.println("您輸入的文字: " + (num1+num2));
可以思考不同的設計方法
public static void main(String[] args) throws IOException {
  BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
  int num;
  System.out.print("請輸入一個數字: ");
  num = Integer.parseInt(buf.readLine());
  System.out.print("請輸入一個數字: ");
  num+=Integer.parseInt(buf.readLine());
  System.out.println("您輸入的文字: " + (num));

 }

沒有留言:

張貼留言