如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

          由于工作需要,今天看了看Groovy,下面是學習過程的學習筆記:
          基本原則:Java完全可以調用Groovy寫好的類;Groovy完全可以調用Java寫好的類;即使不使用Groovy的特有的語法,可以使用Java中的絕大部分傳統寫法。
          1 如果使用 groovy.lang.*,grooby.util.*,java.lang.*,java.util.*,java.net.*中的類的時候無需import。
          2、支持assert,比如assert 1==1,assert(true)
          更高級的用法:assert('text'.3<<'hello').size==4*3+5
          3、groovy支持弱類型聲明def x=1
          4、GroovyBean
          class Book
          {
             String title;//聲明的是屬性,而非字段
          }
          def g = new Book()
          print g.title
          print g.getTitle()
          5 groovy中的==表示等于(equality),而非同一(identity),這與java不同。
          6 def nick = 'Gina'
          def book = 'Groovy'
          assert '$nick is $book' = 'Gina is Groovy'
          7 使用正則判斷字符串匹配:assert '12345'=~/\d+/
          8 groovy中可以直接對Integer類型使用四則運算,可以對int類型調用toString方法。
          9 使用list:
          def r =['a','b','c']
          assert r[0]='a'
          assert r.size()==9
          使用map:
          def http=[100:"cont",200:'ok']
          assert http[200]=='ok'
          http[800]='what?'
          使用ranges:
          def x=1..10
          assert x.contains(5)
          10 閉包:
          (1)[1,2,3].each{entry->println entry}
          (2)累加計算:其中upto表示從1遍歷到10
          def  counter=0
          1.upto(10)
          {
             number->
             counter = counter+number
          }
          println counter
          11 動態執行:evaluate('1+2') 會打印出3
          12 groovy中類型可以弱類型聲明,也可以強類型聲明,并且聲明的時候會自動進行boxing,比如def a=1是可以的,int a=1也是可以的,而且第二種用法中聲明的a是Integer類型的。
          13 Groovy支持運算符重載,其實現方式和python類似,也就是類只要實現某個方法即可實現運算符重載,下面是運算符和對應方法:+ plus;- minus;* multiply;/ div;% mod;++ next;-- previous;** power;| or;& and;^ xor;~ negate;a[b] a.getAt(b);a[b] = c a.putAt(b,c);a<<b a.leftShift(b);a>>b a.rightShift(b);a>>>b a rightShiftUnsigned(b);
          switch(a){case b:} b.isCase(a);a==b a.equals(b);
          a<=>b a.compareTo(b);
          a>b a.compareTo(b)>0;
          a>=b a.compareTo(b)>=0;
          a<b a.compareTo(b)<0;
          a<=b a.compareTo(b)<=0;
          a as type a.asType(typeClass)
          14 字符串操作:
          g="Hello Grooby!"
          assert g[6..11] == 'Groovy'
          assert g.count('0')==3
          assert 'x'.padLeft(3)=='  x'
          assert 'x'.padRight(3,'_')=='x__'
          assert 'x'.center(3)==' x '
          assert 'x'*3=='xxx'
          15 字符串的LeftShift和切片的應用
          g='Hello'
          g<<' Groovy'
          assert g instanceof java.lang.StringBuffer
          g<<'!'
          assert g.toString()=='Hello Groovy!'
          g[1..4] = 'i'//替換ello為i,切片的典型應用
          assert g.toString()=='Hi Grooby!'
          list等collection類型同樣支持切片
          16 數字的方法:
          def s = ''
          10.times{s+='x'}
          10.downto(0){x+='d'}
          s=''
          0.step(0.5,0.1){number->
          s+=number+' '
          }
          assert s=='0 0.1 0.2 0.3 0.4'
          17 List的常見操作
          assert [1,[2,3]].flattern()==[1,2,3]//扁平化
          assert [1,2,3].intersect([4,3,1])==[3,1]//交集
          assert [1,2,3].disjoint([4.5,6])
          list = [1,2,3]
          assert list.pop()==3//像使用堆棧一樣
          assert [3,1,2].sort()==[1,2,3]
          assert [1]==[1,1,1].unique()//去掉重復元素

          def list=[1,2,3]
          assert list.count(2)==1
          assert list.max()==3
          assert list.min()==1
          def even = list.find{item->
           item%2==0
          }
          assert even ==2
          assert list.every{item->
           item<5
          }//所有的都小于5
          assert list.any{item->
           item<2
          }//任何一個小于5
          list.reverseEach{item->
           store+=item
          }//反向遍歷

          assert [1,2,3].join('-')=='1-2-3'
          for(i in [1,2,3])
          {
             println i
          }
          18 文件處理:
          new File('a.txt').eachLine{println it}
          19 groovy中xml處理非常簡單,可以參考blogjava上的一篇名為“Groovy高效編程——生成XML文件”的文章。
          20 Groovy中使用Swing構建界面:
          import grooby.swing.SwingBuilder

          swing = new SwingBuilder()
          frame = swing.frame(titile:'Demo'){
            menuBar{
              menu('File'){
                  menuItem 'New'
                  menuItem 'Open'
              }
            }
            panle{
              label 'Label my'
              slider()
              comboBox(items:['1','2','3'])
            }
          }
          frame.pack()
          frame.show()
          21 groovy中簡化了jdbc訪問數據庫的方法,提供了execute、eachRow等方法,無需開發人員關心關閉連接等問題。
          22 java中運行grooby腳本的方法:
          GroovyShell shell = new GroovyShell()
          Object result = shell.evaluate("12+23")
          23 Groovy解析引擎的類為GroovyScriptEngine
          def engine = new GroovyScriptEngine(".")
          def value = engine.run("test/MyScript.grooby",new Binding())

           

          posted on 2007-05-31 20:17 CowNew開源團隊 閱讀(2902) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东平县| 志丹县| 高安市| 厦门市| 大连市| 波密县| 武宁县| 天峻县| 凤台县| 重庆市| 河曲县| 家居| 房产| 龙里县| 江安县| 恩平市| 武汉市| 广饶县| 白城市| 综艺| 汽车| 曲松县| 万源市| 成武县| 宣化县| 武冈市| 扬州市| 申扎县| 获嘉县| 阿勒泰市| 靖西县| 额尔古纳市| 东至县| 杭锦后旗| 金塔县| 图片| 突泉县| 滕州市| 赤壁市| 金阳县| 广元市|