<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網(wǎng) 大學(xué)生計算機學(xué)習(xí)社區(qū)

    CowNew開源團隊

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

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

    由于工作需要,今天看了看Groovy,下面是學(xué)習(xí)過程的學(xué)習(xí)筆記:
    基本原則:Java完全可以調(diào)用Groovy寫好的類;Groovy完全可以調(diào)用Java寫好的類;即使不使用Groovy的特有的語法,可以使用Java中的絕大部分傳統(tǒng)寫法。
    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類型調(diào)用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 動態(tài)執(zhí)行:evaluate('1+2') 會打印出3
    12 groovy中類型可以弱類型聲明,也可以強類型聲明,并且聲明的時候會自動進行boxing,比如def a=1是可以的,int a=1也是可以的,而且第二種用法中聲明的a是Integer類型的。
    13 Groovy支持運算符重載,其實現(xiàn)方式和python類似,也就是類只要實現(xiàn)某個方法即可實現(xiàn)運算符重載,下面是運算符和對應(yīng)方法:+ 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和切片的應(yīng)用
    g='Hello'
    g<<' Groovy'
    assert g instanceof java.lang.StringBuffer
    g<<'!'
    assert g.toString()=='Hello Groovy!'
    g[1..4] = 'i'//替換ello為i,切片的典型應(yīng)用
    assert g.toString()=='Hi Grooby!'
    list等collection類型同樣支持切片
    16 數(shù)字的方法:
    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()//去掉重復(fù)元素

    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構(gòu)建界面:
    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訪問數(shù)據(jù)庫的方法,提供了execute、eachRow等方法,無需開發(fā)人員關(guān)心關(guān)閉連接等問題。
    22 java中運行g(shù)rooby腳本的方法:
    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開源團隊 閱讀(2896) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: WWW国产成人免费观看视频| 亚洲人xxx日本人18| 色吊丝性永久免费看码| 日日AV拍夜夜添久久免费| 亚洲狠狠成人综合网| 麻豆最新国产剧情AV原创免费 | 午夜寂寞在线一级观看免费| 亚洲中文字幕无码av永久| 成人a免费α片在线视频网站 | 亚洲午夜精品一区二区麻豆| 在线观看免费人成视频色| ww亚洲ww在线观看国产| 狼友av永久网站免费观看 | 狠狠躁狠狠爱免费视频无码| 亚洲中文字幕久久精品无码喷水 | 亚洲欧美日韩综合俺去了| 夜夜爽免费888视频| 看Aⅴ免费毛片手机播放| 中文亚洲AV片在线观看不卡| 无码国产精品一区二区免费3p | 国产亚洲精品不卡在线| 国精产品一区一区三区免费视频| 亚洲v高清理论电影| av无码免费一区二区三区| 噜噜噜亚洲色成人网站| 亚洲国产综合无码一区| 波多野结衣中文字幕免费视频 | 国产成人综合亚洲绿色| 亚洲人成影院在线无码按摩店| 99视频在线看观免费| 亚洲欧美日韩综合久久久久| 亚洲综合无码AV一区二区| 亚洲一区二区免费视频| 在线观看亚洲视频| 久久亚洲AV午夜福利精品一区| 日韩免费一区二区三区在线| 日本高清免费中文在线看| 亚洲综合久久成人69| 亚洲国产香蕉人人爽成AV片久久 | 日本一区二区在线免费观看| 久久夜色精品国产噜噜噜亚洲AV |