前言:
Android寫久了,你會發現雖然自己在用java寫Android,但是會Android不代表會Java。所以我找了猛虎出柙雙劍合璧版來拜讀。
還沒買,網路上的電子書有試讀版的,大改只給你試讀187頁。
我還沒買正式版,看完試讀版後整理一些我之前忽略的Java基礎。
https://play.google.com/store/books/details?id=EElBCgAAQBAJ
上面是連結,有興趣可以看看他的試讀版內容。
正文開始:
1、&和&&差別
同樣都是 AND 但差別在哪呢?
用一個陣列和if判斷式做簡單說明
ArrayList<String> arrayTest = null;
if(ArrayTest != null && ArrayTest.size() == 1){
}
if(ArrayTest != null & ArrayTest.size() == 1){
}
做個很簡單的判斷,其實公用一樣,差別就在於&如果第一個為false,他還是會往下一個做判斷。
&&如果第一個是false,就直接離開if判斷式了
把上面的例子開程式去跑,if判斷式使用&會崩潰,因為根本是null判斷不了。
&&很順利地跑完判斷式。
2、for迴圈的命名斷點
label_name:
label_outLoop:
for (int i = 0; i < 10; i++) {
label_InnerLoop:
for (int j = 0; j < 7; j++) {
if (j == 5)
break label_outLoop;
}
}
可做到goto的效果
3、for-each的用法
假設你有個陣列內有很多String,這時候我們可以使用for-each把它全部列出來
for-each
ArrayList<String> TestList = new ArrayList<>();
TestList.add("hello1");
TestList.add("hello2");
TestList.add("hello3");
TestList.add("hello4");
for (String string : TestList) {
System.out.println(string);
}
for(要顯示的單體string : 要顯示的陣列)此時看Log就會很漂亮的全部顯示出來。
4、方法內變數int...用法
我們要先了解方法超載overloading這件事情
有時候我們會需要使用到同個名稱,但方法參數有變。
ex:
public void calc(int a){...}
public void calc(int a, int b){...}
如果要寫很多這種的就很累人。
所以可以用int...的方式代表很多參數,這時候就可以取用這些參數做事。
如下例子:
public int newCalc(int... c) {
int sum = 0;
for (int i : c) {
sum += i;
}
return sum;
}
這就變成一個加法計算的方法。
System.out.println("加總:”+newCalc(5,5,10,8)); //加總:28
5、繼承的一些技巧
class Animal {
public void move() {
System.out.println("animal move...");
}
}
class Cat extends Animal {
@Override
public void move() {
System.out.println("cat小貓跳動!!!");
}
public void skill() {
System.out.println("cat小貓亂抓!!!");
}
}
class Bird extends Animal {
public void move() {
System.out.println("鳥拳跳動!!!");
}
}
class Tiger extends Cat {
public void skill() {
System.out.println("狩獵!!!");
}
}
看看圖片有助於幫助了解這邊在幹嘛
這時候
Tiger tiger = new Tiger(); //這行我們稱做用Tiger的觀點來看Tiger Cat tiger=new Tiger();//用貓科動物的觀點來看Tiger Animal tiger=new Tiger();//用動物的觀點來看Tiger Animal tiger = new Tiger(); ((Bird) tiger).move();
編譯是可以過的,但是會Crash
利用Bird的觀點來操作new Tiger();的實體基本上是不合邏輯的,但卻可以過關,因為Bird和Tiger都同為Animal的子類別。
此時可以使用instanceof來做判斷
if(tiger instanceof Bird){
((Bird) tiger).move();
}else{
Log.d(“checkpoint”,"根本不是Bird!!");
}
後記
然後....
就沒有然後了。
如果我有買這本書在做分享。

沒有留言:
張貼留言