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); //將結果輸出