發表文章

目前顯示的是 2月, 2017的文章

argument可以是"值"或"變數"

argument可以是"值"或"變數" e.g. 當作值傳入: void go() {     TestStuff t = new TestStuff();     t.takeTwo( 3, 7 ); } void takeTwo(int x, int y) {     int z = x + y;     System.out.println("Total is " + z);              // Total is 10 } e.g. 當作變數傳入: void go() {     TestStuff t = new TestStuff();     int foo = 7;     int bar = 3;     t.takeTwo( foo, bar ); } void takeTwo(int x, int y) {     int z = x + y;     System.out.println("Total is " + z);              // Total is 10 }

argument(引數) & parameter(參數)

這兩者的差別, 在JavaScript與Java是相同的, argument是傳給method的值。 而當argument傳入method後就成了parameter。 而parameter等同於"區域變數(local variable)"。 重點: 如果某method需要parameter, 那麼我們一定得傳argument給它。 e.g. Dog d = new Dog(); d.bark( 3 );                                          // 3為argument void bark( int numOfBarks ) {                //numOfBarks = 3 --> 此時3為parameter(注意型別要相對應)     while ( numOfBarks > 0) {               // 在此numOfBarks當一般區域變數使用         System.out.println("ruff");         numOfBarks = numOfBarks - 1;     } }

原始型別(Primitive Types)的大小和範圍

Java的變數分為兩種: 1. primitive 2. object reference 現在只看primitive部分-- boolean (JVM決定位元數) : true/ false char 16bits : 0~65535(為值域) 數值(帶正負號):     integer         byte  8bits : -128~127(為值域)         short  16bits : -32768~32767(為值域)     int  32bits : -2147483648~2147483647(為值域)     long  64bits : -很大~+很大(為值域) 浮點數:     float  32bits : 範圍規模可變(為值域)     double  64bits : 範圍規模可變(為值域)

如何產生全域(global)變數&全域method?

對於全域變數: --> 任何變數只要冠上public、static、final都可變成全域取用的常數。 對於全域method: --> 在任何class中的任何程式都可存取public static的method p.s. 在Java的OO觀念中沒有"全域"這件事, 但在實際操作時會需要被任何程式存取的情形, 因而有"全域"的說法。 p.s. 宣告在method中的變數叫"區域變數(local variable)"。

main()的兩個用途

之前有稍微介紹過main(), 用途1: 測試真正的class 用途2: 啓動你的Java程式(當作應用程式的起跑點) 注意: 真正的OO應用程式是"物件與物件之間的互動(互動是指相互叫用的method)", 而main()只是用來啓動真正的Java應用程式

class & object

類別(class) !== 物件(object), class是object的藍圖或模子。 object也可視為是個實體(instance)。 object本身可分為:     1. 本身已知的事物(代表物件的狀態資料), 稱: instance variable(實體變數) -> state     2. 可以執行的動作,稱: method -> behavior object帶有讀取/操作instance variable的method是很常見的。 以下舉一個object例子: e.g. ShoppingCart object: --> state: cartContents --> behavior: addToCart()                      removeFromCart()                      checkOut()

System.out.print v.s. System.out.println

這兩者差別在於, System.out.println 會讓後續的輸出以新的一行開始, 但 System.out.print 的後續輸出仍會和之前的輸出同一行(也就是新的輸出不會另起新行)

main()

一支程式(不管有多少個class)只要一個main()作為程式的起跑點。 e.g. public class MyFirstApp {     public static void main (String[] args) {   // 標黃底就是main(), 為程式的起跑點         System.out.print("I Rule!");     } }

Java的程式結構

class存於原始檔(副檔名: .java)中, 檔案內容中寫: public class Dog {       // 最外層是class: class用來表示程式的一個組件     void bark() {           // 次層是method: method需宣告在class內, 表示方法 (可將method想成是一個函數或程序)         statement 1;       // 內層是statements: 表示方法應執行的指令         statement 2;      // 內層是statements: 表示方法應執行的指令     } }

我的另個舊網誌-- 關於JavaScript的那些事

為何想叫"小步舞曲"? 因爲我還是以寫JavaScript為主... 所以Java為輔, 是因為工作需要所以開始開新網誌, 就像寫code希望能在自己能力範圍切割好每個function功能, 所以不想將JavaScript和Java寫在同個網誌, 關於JavaScript的那些事連結:  https://lucrelin.blogspot.tw/

在我的Macbook Pro寫java

這兩篇一起看可以在Macbook Pro寫java 目前自己的Macbook Pro是OSX 10.12.3版本 http://subowxd.becoder.org/2016/03/01/java-macosx-terminal/ http://appsgaga.com/%E5%88%86%E4%BA%AB-%E5%A6%82%E4%BD%95%E5%9C%A8-mac-%E9%9B%BB%E8%85%A6%E4%B8%8A%E9%9D%A2%E5%AF%AB-java-%E7%9A%84%E7%A8%8B%E5%BC%8F/