interface.jpg
 
前言


    為何要套用設計模式呢?在OO的設計模式下,撰寫的程式碼是以"降低耦合提高內聚"為最大目標,我們可以透過套用設計模式的方法來趨近這個目標,以下利用電腦的USB介面來做一個策略模式的實作,我們將東西像電腦的周邊裝置一樣一一的組件化,這樣一來就達到低耦合的效果了。

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

public class Short_circuit {

public static void main(String[] args) {
And a = new And();
a.longerThan1(null, 3);
a.longerThan2(null, 3);
}

}

class And {
public boolean longerThan1(String input, int length) {
return input != null && input.length() > length;
// 第一個已經不成立了 就不會做下一個and判斷
}

public boolean longerThan2(String input, int length) {
return input != null & input.length() > length;
// 第一個已經不成立了 還是做第二個and判斷
//因此null.length()時會出現
//Exception in thread "main" java.lang.NullPointerException
}
}


Fulung Chen 發表在 痞客邦 留言(0) 人氣()

1.png
一、Android開發環境-Eclipse
Eclipse是著名的集成開發環境(IDE),最初主要是用來Java語言的開發,隨著後來的發展,越來越多外掛程式(Plug-in)的加入,因此透過外掛程式可使Eclipse開發其他計算機語言,例如C++、Python等,亦可作為Android App的開發環境;Eclipse至今,它已佔據全世界Java開發環境市場大約65%。
 

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

package com.artifex.mupdfdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class L_Home extends Activity {

TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.l_home);
tv = (TextView) findViewById(R.id.textView1);
DownloadTask dTask = new DownloadTask();
dTask.execute(10);
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
Log.e("onStart", "onStart");
super.onStart();
}

class DownloadTask extends AsyncTask<Integer, Integer, String> {
// 後面尖括號內分別的參數是 傳入doInBackground、進度(publishProgress用到)、返回onPostExecute值類型

@Override
protected void onPreExecute() {
// 第一個執行方法
super.onPreExecute();
}

@Override
protected String doInBackground(Integer... params) {
// 第二個執行方法,onPreExecute()執行完後執行
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(params[0]);
publishProgress(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "執行完畢";
}

@Override
protected void onPostExecute(String result) {
// doInBackground返回時觸發,換句話說,就是doInBackground執行完後觸發
// 這裡的result就是上面doInBackground執行後的返回值,所以這裡是"執行完畢"
super.onPostExecute(result);
// Toast.makeText(L_Home.this, result, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(L_Home.this, L_TabActivity.class);
startActivity(intent);
finish();
}

@Override
protected void onProgressUpdate(Integer... progress) {
// 這個函數在doInBackground調用publishProgress時觸發,雖然調用時只有一個參數
// 但是這裡取到的是一個數組,所以要用progesss[0]來取值
// 第n個參數就用progress[n]來取值
tv.setText(progress[0] + "%");
super.onProgressUpdate(progress);
}
}
}

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

未命名-2
這邊來講解一下Continue與Proceed的不同
兩個都是動詞 也都是繼續的意思 那到底差在哪裡呢?
 
我用一個動畫來表示一下

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

 
/*
* class內的屬性、方法何時被執行?
*/

public class test {

public static void main(String[] args) {
/*
* 因為在class child被加載時,執行了total++;
* 因此打印出 1
*/
System.out.println(child.total);

/*
* 因為在new物件時,構造方法執行了total++;
* 而下面new了兩個物件(p1、p2)
* 因此打印出 3
*/
child p1 = new child();
child p2 = new child();
System.out.println(child.total);

/*
* 因為物件執行了print();一般方法,此方法執行了total++;
* 因此打印出 4
*/
p1.print();
System.out.println(child.total);
}

}

/*
* class
*/
class child {
// JVM加載Class時執行
static int total = 0;
// JVM加載Class時執行
static {
total++;
}

/*
* new物件的時候被執行
* 例如:child p1 = new();
*/
child() { // 構造方法
total++;
}

/*
* 物件呼叫該方法才執行
* 例如:p1.print();
*/
void print() { // 一般方法
total++;
}

}

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

This是什麼?
假如我們寫了一個Class,我們需要把構造方法Or方法內的值賦予給這個Class的屬性時,
我們可以用到this這個修飾詞,意思是什麼?
//屬性
int age;
String name;

//方法
Person(int age, String name) {
age = age;
name = name;
}

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

static total
假如今天我們要做字串搜尋、比對時,我們可以用pattern以及matcher來做
 
  

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

管理後台  部落格  文章列表 - Mozilla Firefox
如果我們要設計一個int total來統計總人數,我們在創建一個小孩時,就把total加1,並且讓total是所有對象(Object)共享的就可以解決了!
 
首先我們創造了一個Class叫做Child

Fulung Chen 發表在 痞客邦 留言(1) 人氣()

Cygwin
一:什麼是NDK?
NDK 提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so 和java 應用一起打包成apk。這些工具對開發者的幫助是巨大的。
NDK 集成了交叉編譯器,並提供了相應的mk 文件隔離CPU、平台、ABI 等差異,開發人員只需要簡單修改mk 文件(指出「哪些文件需要編譯」、「編譯特性要求」等),就可以創建出so。NDK 可以自動地將so 和Java 應用一起打包,極大地減輕了開發人員的打包工作。比較簡單的說,NDK是一套交叉編譯工具,它可以幫你把你用C或C++書寫的代碼,編譯為.so(類似與Win下的.dll)格式的文件,使你可以在你的Android程序當中用Java語言(JNI)調用這些程式碼.
 

Fulung Chen 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。