Just Java IT

          西門町學士關于Java的隨便一說而已……

          走進JavaFX-(2)

          /**
          * 繼續俺的JavaFX學習,語法部分
          * 文:西門町學士
          * 位置:http://www.aygfsteel.com/stevech/
          */
          我猶豫了好一陣才決定寫JavaFX的語法部分。個人認為這是學習中最枯燥的部分。因為JavaFX的語法非常簡單且直觀,比如Sun提供的在線 Tutorial的GUI部分,即使你是第一次聽說JavaFX這個東西,只要你稍有一點點編程經驗,你也基本上能夠毫無障礙地理解這個Tutorial 的內容了。
          話雖如此,部分語法可能確實會造成一些理解困難,比如有的地方分隔符用逗號(,)分號(;)和空格都可以,def和var的區別,=>操作符,等等這些還得初看一遍語法才能理解(當然,基本上就沒有必要看第二遍了吧)。因此,我也在此將JavaFX的語法照著Sun的語法 Tutorial快速地過一遍,為以后打下一個堅實(!)的基礎,呵呵。

          def: 定義常量
          var: 定義變量

          function {}: 定義函數
          function fun(arg: Integer) {}: 一個名為fun需一個Integer參數類型的函數,沒有返回值,等同于
          function fun(arg: Integer) : Void {}
          如果是
          function fun(arg: Integer) : Integer {} 則是返回Integer類型

          Person {
            firstName: "java"; //在這里用;、,或是什么都不用皆可
            lastName: "sun",
            gender: "x"
            age: "12"
          }
          定義了一個Person對象實例。
          對象可以嵌套,如
          Person {
            firstName: "java"; //在這里用;、,或是什么都不用皆可
            lastName: "sun",
            gender: "x"
            age: "12"
            email: Email {
              url: "java@sun.com"
            }
          }

          String類型
          def name = 'Sun'; //單引號雙引號都一樣
          var s = "Hello {name}"; // Hello Sun。{}代表內嵌表達式

          Boolean類型
          var answer = true;

          Number和Integer類型
          Number表示浮點數:def numOne = 1.0;
          Integer表示整數:def numTwo = 1;
          不嫌麻煩的話(吃多了撐得慌):
          def numOne : Number = 1.0;
          def numTwo : Integer = 1;

          Duration類型
          以前沒見過。其實就是時間間隔。
          5ms;// 5毫秒
          10s;// 10秒
          15m;// 15分鐘
          20h;// 20個鐘頭

          Void
          知道吧。僅用于函數返回值(不用也是一樣的)記住V是大寫的

          null
          這個更沒問題了吧。這年頭就指望著null吃飯呢

          Sequence
          []。類似于數組更類似于list
          var seasons = ["Spring","Summer","Fall","Winter"];
          可嵌套
          var ss = [seasons, ["Moon","Beauty"]];
          對于數字更有:
          var nums = [1..100];//兩個點,別弄成三個了
          var nums = [1..10 step 2];//1,3,5,7,9
          var nums = [10..1 step -1];
          還有:
          var nums = [1,2,3,4,5];
          var numsGreaterThanTwo = nums[n | n > 2];
          訪問:
          nums[0]等等等等,別忘了下標從0計
          sizeof: 個數
          插入:
          var days = ["Mon"];
          insert "Tue" into days; //哇,SQL冒出來了啊
          insert "Fri" into days;
          insert "Sat" into days;
          insert "Sun" into days;
          insert "Thu" before days[2];//將Thu放在days[2]之前
          insert "Wed" after days[1];//將Web放在days[1]之后
          刪除:
          delete "Sun" from days;
          delete days[0];
          delete days;//現在days是空的了,但days這個變量還是存在的
          反轉:
          var nums = [1..5];
          reverse nums;//變成5,4,3,2,1
          比較:
          ==
          元素和位置完全相同,true;否則false
          子集:
          var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          var weekend = days[5..6];//Sat和Sun
          var weekdays = days[0..<5];//類似于數學上的[)半閉半開范圍
          var weekend = days[5..];//到頭
          var days2 = days[0..<];//除了最后一個

          操作符部分
          =、+、-、*、/、mod、+=、-=、*=、/=、++、--、not
          ==、!=、>、>=、<、<=
          and、or
          instanceof
          唯一需要注意的是String沒有重載+,因此不能用+來連接String,得用函數。

          表達式
          以;結尾。

          if ..else if...else
          可以這么用:
          price = if (age < 5) 0 else if (age > 5 and age < 12) 5 else 10;

          for...in
          var days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          for (day in days) {}
          也可以:var squares = for (i in [1..10]) i*i;

          while、break、continue

          throw、try...catch...finally

          數據綁定:bind和bound

          var x = 0;
          def y = bind x;//現在y的值隨x變動而變動。注意我們用def來定義y

          var x = 1.0;
          bound function fun(arg: Type) : Type {
            something relating to x;
          }//定義了一個可以綁定外部參數的函數

          觸發器(replace trigger)//SQL再現?
          on replace

          var password = "foo" on replace oldValue {
               println("\nALERT! Password has changed!");
               println("Old Value: {oldValue}");
               println("New Value: {password}");
          };
          password = "bar";
          當值改變時觸發!

          自定義類型
          終于,終于!class出現!

          class Person {
            var firstName: String;
            var lastName: String;
            var gender: String;
            var age: Integer;

            function printName() {
              println("Name: {firstName} {lastName}");
            }
          }

          子類
          abstract class X {
            ...
            function doSth(...) {}
            ...
          }
          class XX extends X {
            ...
            override function doSth(...) {}
            ...
          }

          包:package
          跟Java沒區別~~

          訪問修飾符
          默認(即沒有修飾符):跟Java不同,稱為Script-only,也就是只有當前這個文檔內的可以訪問它,類似于private(跟C++的默認方式相同)
          package:在同一個包內可以訪問
          protected:同一個包或子類
          public: 公共
          public-read:把public限制了一下,不允許外部進行寫操作。還可以再加修飾符來將寫操作放寬,比如package public-read或protected public-read
          public-init:可由外部進行初始化賦值,然后就跟public-read一樣了。

          posted on 2008-12-16 01:05 西門町學士 閱讀(1818) 評論(4)  編輯  收藏 所屬分類: Java

          Feedback

          # re: 走進JavaFX-(2)[未登錄] 2008-12-16 08:46 老紫竹

          你這家伙,跑這面多久了?  回復  更多評論   

          # re: 走進JavaFX-(2) 2008-12-16 15:10 西門町學士

          @老紫竹
          呵呵,紫竹老兄,有段時間csdn的blog服務有問題(好像是05、06年的時候吧,對FF支持差),我就到處找地兒,后來csdn穩定了,其他的地盤就荒了,就這塊地兒還留著,在csdn寫了東西也捎帶著copy到這兒來了 囧~~  回復  更多評論   

          # re: 走進JavaFX-(2)[未登錄] 2008-12-17 14:01 object

          這不就是javascript和actionscript的語法么  回復  更多評論   

          # re: 走進JavaFX-(2) 2008-12-18 08:28 西門町學士

          @object
          表看見var、def、function就宣稱這是JavaScript  回復  更多評論   

          主站蜘蛛池模板: 隆昌县| 泸州市| 安康市| 改则县| 灌南县| 莲花县| 镇雄县| 赫章县| 华亭县| 罗平县| 高陵县| 兴业县| 长治县| 昭通市| 阿鲁科尔沁旗| 汶上县| 平潭县| 定日县| 垦利县| 潞西市| 呼伦贝尔市| 文山县| 滦南县| 绥滨县| 华容县| 元阳县| 玛曲县| 大名县| 通辽市| 汕头市| 延安市| 安图县| 乾安县| 九江市| 邳州市| 永年县| 武功县| 洪江市| 三明市| 基隆市| 凌云县|