發新話題

Java 教程《語法說明》資料型態

Java 教程《語法說明》資料型態

■ 資料型態
◇ 資料型態包括:
 A) 基本資料型態          
      
 B) 參考型態
   class types
   interface types
   array types

 ※[註]
  1> numeric data types 中,除了char 為唯一的 unsigned integral type 外,其餘皆為 signed integral type               
  2> 型態的表示               
    ‧long -數字後加上 l 或 L。例: 200L       
    ‧float -數字後加上 f 或 F。例: 20.7f
    ‧double -數字後加上 d 或 D。如: 300D
    ‧boolean 型態只有  true 和 false 值
    ‧String literals 為 String objects,並非 primitives,為包含在雙引號(double quotes) 內的 characters
    ‧backslash (\) 為 Java 的 escape code character
    ‧Unicode characters 的表示法可用 \u 後加 4 個 hexadecimal digits (\u0000 到 \uffff),Unicode 字元可出現在任何地方
     [範例]
     \r 代表 carriage return
     \' 代表 single quote
               
     [範例]
     ch\u0061r  a = 'a';
     char  \u0062 = 'b';
     char  c = '\u0063';

  3> Octal literals 以 0 開頭(阿拉伯數字中的 0),Hex literals 以 0X 或 0x 開頭               
    [範例] 合法的 16 進位數字(hexadecimal)
    0x0001、0x7ffffffff、0xDeadCafe

◇ 浮點數
1. 實數(浮點數)的表示方式                               
 A) 實數的表示法採用所謂的科學記號表示法:                                                                       
   (1)S:正負號  (2)F:有效位數  (3)E:指數
    S × F ±E
 B) 十進位與二進位表示法
   十進位 ± d.dddddd × 10E
   二進位 ± 1.bbbbbbb × 2E  在計算機中採用的是二進位科學記號表示方式
 C) 浮點數的儲存
  ‧單精確度浮點數 float
   
   二進位浮點數小數點前一位必然為 1,可以不用儲存,所以雖然只有 23 位,實質上可以表示 24 位的有效小數位數。

   單精確度浮點數最大為 3.40282347e+38f,最小為1.40239846e-45f                                                                                                                                                               
   最大 0111 1111 0111 1111 1111 1111 1111 1111
   最小 0000 0000 0000 0000 0000 0000 0000 0001

  ‧雙精確度浮點數 double
  

  Sign:0 → positive,1 → negative               
  Exponent:excess-127 format for float,excess-1023 format for double.                
  指數採用超過某一數值(Excess Number-excess 127), 而不用負數               
   ‧ Float:Emin = -126, Emax = 127        
   ‧ Double:Emin = -1022, Emax = 1023        
  真正的指數值加 127 為儲存的指數值               

2. 特殊值
  ‧正負無限大      如 1f/0f
    POSITIVE_INFINITY:以所有 exponential-bits 為 1,其餘 bits 為 0 表示。
    NEGATIVE_INFINITY:以 sign-bit 為1,所有 exponential-bits 為 1,所有 mantissa-bits 為 0 表示。
    [範例] 
    1.0 / -0.0 = -Infinity
    1.0 / 0.0 = Infinity
    0.0 / 0.0 = NaN
  ‧±0
    使用所有 bits 皆為 0 表示
  ‧NaN(Not a Number)  非法的浮點數運算結果(不會產生例外),如 0.0/0.0
    以 sign-bit 為 0,所有 exponential-bits 為 1, mantissa-bits 中左側第一個為 1 其餘為 0 表示。

2. Java 並沒有提供以十進位為底之外的浮點直譯字(literal) 表示法。       
 類別 Float 的方法 intBitsToFloat 和類別 Double 的方法 longBitsToDouble 提供了以十六進位或八進位整數直譯       
 字的用語來表示浮點值的方式。       
 [範例]
 Double.longBitToDouble(0x400921FB54442D18L)  等於 Math.PI 的值。

3. 有效位數問題

◇ Literals                       
1. char literals 為包含在單引號內的字元,或是以 \u 開頭的 unicode 值       
2. number 預設為 int literal,decimal number 預設為 double literal       
3. 1E-5d 為合法的 double literal,E2d 不是(以 letter 開頭,compiler 會認為它是 identifier)

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。