綁定帳號登入

Android 台灣中文網

Android 台灣中文網 標籤 java 相關日誌

tag 標籤: java

相關日誌

分享 JAVA 學習:Thread 執行緒 應用學習
熱度 1 jianrupan 2021-12-3 14:58
學習網站: https://www.youtube.com/watch?v=9liopGtCF6w public class Counter { public static int count = 0 ; // 一個公開靜態屬性 An public static attribute public static void main ( String [] args ) throws Exception { // 計算程式執行的時間 Trace running time long startTime = System . currentTimeMillis (); /* Test an easy method to increase count 2 billions times 測試一個簡單的方法 , 把數字累加 20 億次 */ for ( int i = 0 ; i 200000000 ; i ++) { Counter . count ++; } long endTime = System . currentTimeMillis (); System . out . println ( " 單一程序運算時間 : " +( endTime - startTime )+ " mSecs" ); Counter . count = 0 ; startTime = System . currentTimeMillis (); /* Compute in parallel by Thread 使用執行續 , 讓工作同時分散進行 We have to design a class implementing Runnable interface and instantiate it. 必須準備一個實作 Runnable 介面的類別 , 並產生物件實體 Create thread by object instance implementing Runnable interface 利用實作 Runnable 介面的物件 , 建立執行緒 */ Thread t1 = new Thread ( new Worker ( 100000000 )); Thread t2 = new Thread ( new Worker ( 100000000 )); t1 . start (); // 啟動執行緒工作 Start thread t2 . start (); t1 . join (); // 等待執行緒工作完成 Wait thread to finish t2 . join (); endTime = System . currentTimeMillis (); System . out . println ( " 雙執行緒運算時間 : " +( endTime - startTime )+ " mSecs" ); } } public class Worker implements Runnable { private int times ; int count ; // 物件建構子 public Worker ( int times ) { this . times = times ; } // 實作 Runnable 介面 Implement Runnable interface public void run () { count = 0 ; for ( int i = 0 ; i this . times ; i ++) { count ++; } } } 驗證結果: 單一程序運算時間 : 2393 mSecs 雙執行緒運算時間 : 2239 mSecs
個人分類: 軟體應用|289 次閱讀|0 個評論
分享 (JavaChapter4) 與電腦猜拳
jerry7778071 2020-5-19 23:44
//package JavaChapter4; // //import java.util.Scanner; // //public class test { // public static void main(String[] args) { // Scanner input = new Scanner(System.in); // String a1 = "1 is scissor. "; // String a2 = "2 is rock. "; // String a3 = "3 is cloth."; // String a11 = "scissor"; // String a22 = "rock"; // String a33 = "cloth"; // // System.out.print(a1 + a2 + a3); // System.out.println(""); // // // System.out.println("Please enter your guess in string Form. scissor, rock or cloth: "); // String guessFromUser = input.nextLine(); // int num = (int) (Math.random() * 3) + 1; // // //user"s guess is scissor // if (guessFromUser.equals(a11)) { // if (num == 1) System.out.println("Comp"s guess is scissor. It"s a deuce."); // if (num == 2) System.out.println("Comp"s guess is rock. You lose."); // if (num == 3) System.out.println("Comp"s guess is cloth. You win."); // } // //user"s guess is rock // if (guessFromUser.equals(a22)) { // if (num == 1) System.out.println("Comp"s guess is scissor. You win. "); // if (num == 2) System.out.println("Comp"s guess is rock. It"s a deuce."); // if (num == 3) System.out.println("Comp"s guess is cloth. You lose."); // } // //user"s guess is cloth // if (guessFromUser.equals(a33)) { // if (num == 1) System.out.println("Comp"s guess is scissor. You lose."); // if (num == 2) System.out.println("Comp"s guess is rock. You win. "); // if (num == 3) System.out.println("Comp"s guess is cloth. It"s a deuce."); // } // } //}
個人分類: JavaChapter4 函數、字符、字符串|252 次閱讀|0 個評論
分享 Java Number Byte Array To Int 實作
jianrupan 2017-6-27 14:41
byte[] buf = {0x31, 0x30, 0x30}; int getInt = Integer.valueOf(new String(buf)); Log.i(TAG, "Number Byte Array To Int: "+getInt);
個人分類: 軟體應用|531 次閱讀|0 個評論
分享 教您如何移除無人駕駛偵測Freedom
229402779 2014-1-30 00:49
所需工具: 一、擁有Java環境的電腦 二、Apktool( apktool.rar (2.72 MB, 下載次數: 196, 售價: 1 個碎鑽) ) 三、無人駕駛v1.98( gemAutoV1.98.apk (186.76 KB, 下載次數: 138, 售價: 1 個碎鑽) ) 四、Apk簽名工具( 請善用版上資源 ) 這裡不多做介紹了 如果你的電腦沒有Java環境 請自行Google解決 教程開始: 一、解壓此文所附的 Apktool 到 D槽 二、將此文所附的 無人駕駛 也放到 D槽 記得 重新命名 為「 a.apk 」 三、在D槽建立一個 資料夾 ,並命名為「 output 」 四、開啟「 命令提示字元 」 五、輸入如下指令: cd /d D:apktool apktool.bat d -f D:a.apk D:output 六、以筆記本開啟如下路徑的檔案: D:outputsmalicomanywheregemAutoMainActivity.smali 七、使用「尋找」的功能,可以「 Ctrl + F 」快捷啟用 八、 搜尋 關鍵字:「 Freedom 」 九、找到之後, 修改掉Freedom的字眼 ,例如改成「Freeeedom」,然後 儲存檔案 十、再次開啟「 命令提示字元 」 十一、輸入如下指令: cd /d D:apktool apktool.bat b D:output 十二、將 Apk簽名工具 同樣解壓至 D槽 十三、將如下路徑的 檔案複製到Apk簽名工具的資料夾 裡: D:outputdista.apk 十四、將 a.apk拖曳至sign_pack.bat執行 簽名 十五、 待程序跑完 後,會發現你所在的路徑下 多了一個資料夾 ,點開後, 該Apk檔即是成品啦 =================================
0 個評論
分享 Java 物件導向程式設計學習
jianrupan 2013-10-15 09:41
物件導向的設計方式是 Java 的核心,即使是最簡單的 Java 程式,它的寫作方式仍然是物件導向的概念。「資料」和「程式碼」是電腦程式的兩大核心。 類別與物件: 「 物件 」來自於「 類別 ( Class )」。 類別 定義了 物件 的「 成員 ( member )」, 成員包含 了 物件的屬性 (物件資料)和 方法 (物件行為)。 利用「 類別 」定義的規範產生「 物件 」的 動作 稱為「 實體化 ( instantiate )」,每一個 由類別產生的物件稱為該類別的「實體( instance )」 。 定義出一個新的類別也就是定義了一個新的資料型態。 物件導向的三大特性: 封裝 ( encapsulation )、 繼承 ( inheritance )、 多型 ( polymorphism )。 定義類別: 類別的定義必須使用關鍵字 「 Class 」 來完成。 類別名稱 採用「 Pascal 」的命名方式,第一個字母採用大寫,其餘的字元是小寫。 定義在類別中的變數或是資料稱為「實體變數( instance variable )」,或稱為「資料成員( data member )」。 定義在類別中的函式稱為「方法」,或是「成員方法」。 實體變數和方法的名稱 採用「 Camel 」的命名方式,名稱中第一個單字都會以小寫字母表示,如果該名稱是多個單字組合而成,那第一個單字的第一個字母會採用小寫,其餘單字的第一個字母採用大寫字元。 建構子的使用: 物件導向的程式提供了「建構子( Constructor )」的機制,讓設計者可以在建立物件時立即初始化資料成員。 類別一定會有建構子 ,但如果在定義類別時,未曾同時定義建構子,則該類別在實體化時 JVM 會自動建立一個不做任何事的建構子。 方法多載( Method Overloading ): 方法多載,又可以稱為「重載」、「覆載」,主要目的在於實現物件導向中的「 多型 」的精神。物件導向程式中允許同一個類別中可以定義相同名稱的方法,這種現象就是「 同名異式 」。 Class D efine C lass1{ // 定義的類別 Vehicle n ew C ar = new Vehicle(); // 實體化一個類別 newCar.wheel = 4; // 指定實體變數的值 newCar.setWheel(6); // 設定 wheel 值 } Class V ehicle{ // 定義的類別 int wheel; // 定義一個實體變數 public void s et W heel(int n){ // 定義方法 w heel = n; } Public Vehicle(){ // 類別的建構子 方法多載 wheel = 4; } Public Vehicle(int n){ // 定義有參數的建構子 wheel = n; } } 類別的繼承: 繼承的主要目的是在於當我們定義新類別時,可以不需要重覆的定義成員變數或是成員方法。其精神在於可以「重覆」的使用程式碼。當然,它也包含了新類別擴充性的精神。 Java 在繼承的機制上是採用「單一繼承」的方式,也就是說,一個類別作多只能直接繼承自另一個類別。 在 Java 中,如果某個類別要繼承自另一個類別,再宣告衍生類別時,需要使用「 extends 」關鍵字。 Java 中所有類別都是衍生自「 Object 」類別。所以, 如果類別沒有明確的指定副類別為何,再編譯時,類別都會自動繼承 Object 類別 。 this 的使用: 「 this 」只能在類別中使用,它是用來參考物件實體本身,也就是說:「 this 」儲存的是物件本身的位址。 Java 程式在編譯時,會自動將類別中的成員加上「 this 」。 「 this( ) 」的「 ( ) 」中要傳入適當的參數, Compile 會根據傳入的參數型態找到適當的建構子並執行。 使用「 this( ) 」的方式呼叫另一個建構子的語法 只能使用於建構子中 ,不能在一般的方法中使用這樣的敘述。再則,此行敘述 必須置放於建構子的第一行中 。 class Car{ public int wheel; } à class Car{ public int this. wheel; } Class Car{ protected int wheel; protect String name; public Car(int wheel){ this (“No Name”); // 呼叫另一個建構子 this .wheel = wheel; } Public Car(String name){ this .name = name; } } super 的使用: 「 this 」用來參考物件實體本身,而「 super 」則會參考到目前類別的父類別,這裡所謂的父類別是指宣告類別時,「 extends 」關鍵字之後的類別。 子類別的建構式中可以利用「 super( ) 」來呼叫父類別的建構式。如果子類別中並沒有特別指定需要呼叫父類別中的哪一個建構式時, Compiler 會 自動呼叫父類別的預設建構式 。 class A{ public A() { } } class B extends A{ public B(){ } } à 編譯後轉為 class B extends A{ public B{ super(); } } 修飾字:某些修飾字可以混合使用,不在乎出現順序。 private : public : protected : 存取修飾字元的有效範圍: 位置 private 無修飾字元 protected public 同一類別 ● ● ● ● 同一套件中的子類別 ● ● ● 同一套件,但不是子類別 ● ● ● 不同套件的子類別 ● ● 不同套件,也不是子類別 ● final : 程式可以在宣告時同時指定「 final 」變數的值,或者在第一次使用到「 final 」變數時指定變數的值。但 final 變數的值一但設定後,變數的值就不可以再更改了。 物件變數:程式中也不能在改變該物件變數的參考,但可以改變該物件變數所指到的資料內容。 資料成員:必須於宣告時立即指定該資料成員的值,而且無法再變更。 類別:該類別無法被繼承。 abstract : 只可以套用餘類別以及函式上。 類別:只能用來被繼承,而且不能夠被實體化。 類別成員方法:只有名稱、參數內容和回傳型別的定義,不能有實做的部份。 和「 final 」相比,「 abstract 」類別無法被實體化而必須衍生子類別;而「 final 」類別可以被實體化,但無法衍生子類別。 static : 可以套用於變數、資料成員、函式。 載入(不是實體化)時,即被配置空間。 不管該類別有幾個實體,「 static 」變數或函式都只有一個。 不需將類別實體化就可以直接使用。 Static initializer :只在類別被載入(不是實體化)時才會被執行,而且只執行一次。 Class Static_Test{ Static int age = 10; Static{ age += 1; } } native : transient : synchronized : volatile :
個人分類: 軟體應用|471 次閱讀|0 個評論