1 JAVA基本操作介紹


1-1 基本型態

  • 整數-int 、long、short
  • 浮點數-float、double
  • 字元-char
  • 邏輯-Boolean

1-2 變數宣告

型態 變數名稱 = 值;
int sum = 10;

1-3 強制轉型

注意:由大變小,數值有可能會遺失

double weight=45.9;
int weight2=(int)weight;
System.out.println(weight2);
---------------------------
45

int / int 即使答案有小數點,還是會是個int

double x=5/3;
System.out.println(x);
----------------------
1.0

double x=(double)5/3;
System.out.println(x);
-----------------------
1.666666667

1-4 浮點數的特殊性

  • java裡的小數點數值都會被預設為double
float pi=3.14; //error : cannot convert from double to float
float pi=3.14f; //ok
  • 浮點數的計算不會精準
double x=0.5;
double y=0.4;
System.out.println(x-y);
---------------------------
0.09999999999999998

照理來說0.5 - 0.4應該要是0.1才對,為什麼答案會有誤差呢?

因為電腦在儲存小數點時,是用二進位來儲存

十進位 二進位
0.5 0.1
0.4 0.0110011001100110....(不斷循環)

可以看出當我們將0.4儲存在y裡面的時候,數值其實是會不夠放的

所以進行的精確的減法後,答案也不會準確,但java有提供我們更方便的方法來精確的處理浮點數運算

  • 如何精確處理浮點數計算

java.math.BigDecimal 變數名=new java.math.BigDecimal( string );

BigDecimal用字串一數字一數字來進行加減乘除運算,避開了浮點數的精準度問題

BigDecimal x=new jBigDecimal("0.5");
BigDecimal y=new BigDecimal("0.4");
System.out.println(x.subtract(y).doubleValue());
----------------------------
0.1

1-5 運算子

1-5-1 運算子種類
  • 算數運算子:+ , - , * , % , /.....
  • 關係運算子:==, > , < , != , >=....
  • 條件運算子:&&, || , ! ....
  • 位元、位移運算子:& , | , ^ , ~
  • 指定運算子:+=, -= , /= ....

運算子最需要注意的是它的優先順序

1-5-2 算數運算子
  • +=
int a;
System.out.println(a+=3);
//error : The local variable a may not have been initialized
//請一定要給初值才可以做+=、-=等運算
  • ++、--
int a=0; //請注意一定要給初值
System.out.println(a++);
System.out.println(a);
System.out.println(++a);
-----------------------------
0
1
2
1-5-3 位元運算子、位移運算子
運算子 運算
A & B AND
A \ B OR
~A NOT
A^B XOR
A<<n 往左移n個位元
A>>n 往右移n個位元
  • 邏輯閘
input1 input2 AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
int x=3;
int y=4;
ystem.out.println("x&y="+(x&y));
System.out.println("x|y="+(x|y));
System.out.println("x<<1="+(x<<1));
System.out.println("y>>1="+(y>>1));
------------------------------------
x&y=0
x|y=7
x<<1=6
y>>1=2

1-6 基本輸入輸出

  • java.util.scanner
  • System.out.println( string )
int i;
double d;
Scanner scanner=new Scanner(System.in); //建立一個scanner object
i=scanner.nextInt(); 
d=scanner.nextDouble();
System.out.println(i+"\n"+d); //將結果輸出

results matching ""

    No results matching ""