最近更新|軟件分類|軟件專題|軟件排行|手機(jī)版|軟件發(fā)布Groovy v3.0.0最新版
您的位置:首頁>編程開發(fā) > 編程工具>Groovy v3.0.0最新版

Groovy v3.0.0最新版編程軟件

網(wǎng)友評(píng)分:

相關(guān)軟件

軟件介紹

Groovy作為一款編程軟件,集合了很多編程軟件強(qiáng)大的功能,擁有更多的編輯語言,腳本語言,集成jdk等開發(fā)環(huán)境??梢詭椭绦騿T進(jìn)行代碼的編譯,腳本的編寫等操作,是一個(gè)實(shí)用的軟件。

Groovy

功能介紹

Groovy 是用于Java虛擬機(jī)的一種敏捷的動(dòng)態(tài)語言,它結(jié)合了Python、Ruby和Smalltalk的許多強(qiáng)大的特性。它是一種成熟的面向?qū)ο缶幊陶Z言,既可以用于面向?qū)ο缶幊?,又可以用作純粹的腳本語言。使用該種語言不必編寫過多的代碼,同時(shí)又具有閉包和動(dòng)態(tài)語言中的其他特性。

Groovy是JVM的一個(gè)替代語言(替代是指可以用 Groovy 在Java平臺(tái)上進(jìn)行Java 編程),使用方式基本與使用 Java代碼的方式相同,該語言特別適合與Spring的動(dòng)態(tài)語言支持一起使用,設(shè)計(jì)時(shí)充分考慮了Java集成,這使 Groovy 與 Java 代碼的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的結(jié)合編程。)

Groovy入門教程

一、groovy是什么

簡(jiǎn)單地說,Groovy 是下一代的java語言,跟java一樣,它也運(yùn)行在 JVM 中。

作為跑在JVM中的另一種語言,groovy語法與 Java 語言的語法很相似。同時(shí),Groovy 拋棄了java煩瑣的文法。同樣的語句,使用groovy能在最大限度上減少你的擊鍵次數(shù)——這確實(shí)是“懶惰程序員們”的福音。

二、開發(fā)環(huán)境

1、 jdk 1.5以上

2、 eclipse+groovy plugin(支持Groovy 1.5.7)

打開eclipse,通過Software Updates > Find and Install...菜單,使用“Search for new features to install” 下載并安裝groovy插件。New一個(gè)遠(yuǎn)程站點(diǎn),url可使用http://dist.codehaus.org/groovy/distributions/update/,插件名:Groovy plug-in。根據(jù)需要你可以同時(shí)選擇groovy和grails(后續(xù)會(huì)學(xué)習(xí)到):

三、創(chuàng)建groovy項(xiàng)目

1、 新建一個(gè)groovy項(xiàng)目

New --> Project à Java Project 創(chuàng)建一個(gè)java項(xiàng)目。為了方便管理,建議在source中建兩個(gè)source文件夾java和groovy,分別用于存儲(chǔ)java源文件和groovy源文件:

2、 添加 Groovy 特性

在項(xiàng)目上右擊,Groovy à Add Groovy Nature,這樣會(huì)在項(xiàng)目中添加 Groovy Libraries。

3、 添加 Groovy 類

在項(xiàng)目groovy源文件下右鍵,New à Other àGroovy à Groovy Class

自動(dòng)生成的源代碼如下:

public class HelloWorld{

/**

* @param args

*/

public static void main(def args){

// TODO Auto-generated method stub

}

}

我們?cè)趍ain方法中加一句打印語句:

println "Hello World"

4、 編譯運(yùn)行g(shù)roovy類

在源文件上右鍵,Compile Groovy File,然后右鍵,Run As à Groovy ,在控制臺(tái)中查看運(yùn)行結(jié)果。

實(shí)際上 groovy 語法的簡(jiǎn)練還體現(xiàn)在,就算整個(gè)文件中只有println "Hello World"這一句代碼(把除這一句以外的語句刪除掉吧),程序也照樣能夠運(yùn)行。

當(dāng)然,為了說明groovy 其實(shí)就是java,你也可以完全按照java 語法來編寫HelloWorld類。

四、Groovy語法簡(jiǎn)介

1、 沒有類型的java

作為動(dòng)態(tài)語言,groovy中所有的變量都是對(duì)象(類似于.net framework,所有對(duì)象繼承自java.lang.Object),在聲明一個(gè)變量時(shí),groovy不要求強(qiáng)制類型聲明,僅僅要求變量名前使用關(guān)鍵字def(從groovy jsr 1開始,在以前的版本中,甚至連def都不需要)。

修改main 方法中的代碼:

def var="hello world"

println var

println var.class

你可以看到程序最后輸出了var的實(shí)際類型為:java.lang.String

作為例外,方法參數(shù)和循環(huán)變量的聲明不需要def。

2、 不需要的public

你可以把main方法前面的public去掉,實(shí)際上,groovy中默認(rèn)的修飾符就是public,所以public修飾符你根本就不需要寫,這點(diǎn)跟java不一樣。

3、 不需要的語句結(jié)束符

Groovy中沒有語句結(jié)束符,當(dāng)然為了與java保持一致性,你也可以使用;號(hào)作為語句結(jié)束符。在前面的每一句代碼后面加上;號(hào)結(jié)束,程序同樣正常運(yùn)行(為了接受java程序員的頑固習(xí)慣)。

4、 字符串連接符

跟java一樣,如果你需要把一個(gè)字符串寫在多行里,可以使用+號(hào)連接字符串。代碼可以這樣寫:

def var="hello "+

"world"+

",groovy!"

當(dāng)然更groovy的寫法是:

def var="""hello

world

groovy!"""

三個(gè)”號(hào)之間不在需要+號(hào)進(jìn)行連接(不過字符串中的格式符都會(huì)被保留,包括回車和tab)。

5、 一切皆對(duì)象

聽起來象是“眾生平等”的味道,事實(shí)上groovy對(duì)于對(duì)象是什么類型并不關(guān)心,一個(gè)變量的類型在運(yùn)行中隨時(shí)可以改變,一切根據(jù)需要而定。如果你賦給它boolean ,那么不管它原來是什么類型,它接受boolean值之后就會(huì)自動(dòng)把類型轉(zhuǎn)變?yōu)閎oolean值??聪旅娴拇a:

def var="hello "+

"world"+

",groovy!"

println var;

println var.class;

var=1001

println var.class

輸出結(jié)果:

hello world,groovy!

class java.lang.String

class java.lang.Integer

var這個(gè)變量在程序運(yùn)行中,類型在改變。一開始給它賦值String,它的類型就是String,后面給它賦值Integer,它又轉(zhuǎn)變?yōu)镮nteger。

6、 循環(huán)

刪除整個(gè)源文件內(nèi)容,用以下代碼替代:

def var="hello "+

"world"+

",groovy!"

def repeat(val){

for(i = 0; i < 5; i++){

println val

}

}

repeat(var)

輸出:

hello world,groovy!

hello world,groovy!

hello world,groovy!

hello world,groovy!

hello world,groovy!

注意循環(huán)變量i前面沒有def。當(dāng)然也沒有java中常見的int,但如果你非要加上int也不會(huì)有錯(cuò),因?yàn)閺腉roovy1.1beta2之后開始(不包括1.1beta2),groovy開始支持java經(jīng)典的for循環(huán)寫法。

此外,上面的for語句還可以寫成:

for(i in 0..5)

這樣的結(jié)果是一樣的。

7、 String 和 Gstring

除了標(biāo)準(zhǔn)的java.lang.String以外(用’號(hào)括住),groovy還支持Gstring字符串類型(用“號(hào)括住)。把上面的for循環(huán)中的語句改成:

println "This is ${i}:${val}"

運(yùn)行一下,你就會(huì)明白什么是Gstring。

8、 范圍

這個(gè)跟pascal中的“子界”是一樣的。在前面的for循環(huán)介紹中我們已經(jīng)使用過的for(i in 0..5)這樣的用法,其中的0..5就是一個(gè)范圍。

范圍 是一系列的值。例如 “0..4” 表明包含 整數(shù) 0、1、2、3、4。Groovy 還支持排除范圍,“0..<4” 表示 0、1、2、3。還可以創(chuàng)建字符范圍:“a..e” 相當(dāng)于 a、b、c、d、e?!癮..

范圍主要在for循環(huán)中使用。

9、 默認(rèn)參數(shù)值

可以為方法指定默認(rèn)參數(shù)值。我們修改repeat方法的定義:

def repeat(val,repeat=3){

for(i in 0..

println "This is ${i}:${val}"

}

}

可以看到,repeat方法增加了一個(gè)參數(shù)repeat(并且給了一個(gè)默認(rèn)值3),用于指定循環(huán)次數(shù)。

當(dāng)我們不指定第2個(gè)參數(shù)調(diào)用repeat方法時(shí),repeat參數(shù)取默認(rèn)值3。

10、 集合

Groovy支持最常見的兩個(gè)java集合:java.util.Collection和java.util.Map。前面所說的范圍實(shí)際也是集合的一種(java.util.List)。

(1) Collection

Groovy 中這樣來定義一個(gè)Collection:

def collect=["a","b","c"]

除了聲明時(shí)往集合中添加元素外,還可以用以下方式向集合中添加元素:

collect.add(1);

collect<<"come on";

collect[collect.size()]=100.0

Collection使用類似數(shù)組下標(biāo)的方式進(jìn)行檢索:

println collect[collect.size()-1]

println collect[5]

groovy支持負(fù)索引:

println collect[-1] //索引其倒數(shù)第1個(gè)元素

println collect[-2] //索引其倒數(shù)第2個(gè)元素

Collection支持集合運(yùn)算:

collect=collect+5 //在集合中添加元素5

println collect[collect.size()-1]

collect=collect-'a' //在集合中減去元素a(第1個(gè))

println collect[0] //現(xiàn)在第1個(gè)元素變成b了

同樣地,你可以往集合中添加另一個(gè)集合或刪除一個(gè)集合:

collect=collect-collect[0..4] //把集合中的前5個(gè)元素去掉

println collect[0] //現(xiàn)在集合中僅有一個(gè)元素,即原來的最后一個(gè)元素

println collect[-1] //也可以用負(fù)索引,證明最后一個(gè)元素就是第一個(gè)元素

(2) Map

Map是“鍵-值”對(duì)的集合,在groovy中,鍵不一定是String,可以是任何對(duì)象(實(shí)際上Groovy中的Map就是java.util.Linke dHashMap)。

如此可以定義一個(gè)Map:

def map=['name':'john','age':14,'sex':'boy']

添加項(xiàng):

map=map+['weight':25] //添加john的體重

map.put('length',1.27) //添加john的身高

map.father='Keller' //添加john的父親

可以用兩種方式檢索值:

println map['father'] //通過key作為下標(biāo)索引

println map.length //通過key作為成員名索引

11、 閉包(Closure)

閉包是用{符號(hào)括起來的代碼塊,它可以被單獨(dú)運(yùn)行或調(diào)用,也可以被命名。類似‘匿名類’或內(nèi)聯(lián)函數(shù)的概念。

閉包中最常見的應(yīng)用是對(duì)集合進(jìn)行迭代,下面定義了3個(gè)閉包對(duì)map進(jìn)行了迭代:

map.each({key,value-> //key,value兩個(gè)參數(shù)用于接受每個(gè)元素的鍵/值

println "$key:$value"})

map.each{println it} //it是一個(gè)關(guān)鍵字,代表map集合的每個(gè)元素

map.each({ println it.getKey()+"-->"+it.getValue()})

除了用于迭代之外,閉包也可以單獨(dú)定義:

def say={word->

println "Hi,$word!"

}

調(diào)用:

say('groovy')

say.call('groovy&grails')

輸出:

Hi,groovy!

Hi,groovy&grails!

看起來,閉包類似于方法,需要定義參數(shù)和要執(zhí)行的語句,它也可以通過名稱被調(diào)用。然而閉包對(duì)象(不要奇怪,閉包也是對(duì)象)可以作為參數(shù)傳遞(比如前面的閉包作為參數(shù)傳遞給了map的each方法)。而在java中,要做到這一點(diǎn)并不容易(也許C++中的函數(shù)指針可以,但不要忘記java中沒有指針)。其次,閉包也可以不命名(當(dāng)然作為代價(jià),只能在定義閉包時(shí)執(zhí)行一次),而方法不可以。

12、 類

Groovy類和java類一樣,你完全可以用標(biāo)準(zhǔn)java bean的語法定義一個(gè)groovy 類。但作為另一種語言,我們可以使用更groovy的方式定義和使用類,這樣的好處是,你可以少寫一半以上的javabean代碼:

(1) 不需要public修飾符

如前面所言,groovy的默認(rèn)訪問修飾符就是public,如果你的groovy類成員需要public修飾,則你根本不用寫它。

(2) 不需要類型說明

同樣前面也說過,groovy也不關(guān)心變量和方法參數(shù)的具體類型。

(3) 不需要getter/setter方法

不要奇怪,在很多ide(如eclipse)早就可以為序員自動(dòng)產(chǎn)生getter/setter方法了。在groovy中,則徹底不需要getter/setter方法——所有類成員(如果是默認(rèn)的public)根本不用通過getter/setter方法引用它們(當(dāng)然,如果你一定要通過get/set方法訪問成員屬性,groovy也提供了它們)。

(4) 不需要構(gòu)造函數(shù)

不在需要程序員聲明任何構(gòu)造函數(shù),因?yàn)間roovy自動(dòng)提供了足夠你使用的構(gòu)造函數(shù)。不用擔(dān)心構(gòu)造函數(shù)不夠多,因?yàn)閷?shí)際上只需要兩個(gè)構(gòu)造函數(shù)(1個(gè)不帶參數(shù)的默認(rèn)構(gòu)造函數(shù),1個(gè)只帶一個(gè)map參數(shù)的構(gòu)造函數(shù)—由于是map類型,通過這個(gè)參數(shù)你可以在構(gòu)造對(duì)象時(shí)任意初始化它的成員變量)。

(5) 不需要return

Groovy中,方法不需要return來返回值嗎?這個(gè)似乎很難理解??春竺娴拇a吧。

因此,groovy風(fēng)格的類是這樣的:

(6) 不需要()號(hào)

Groovy中方法調(diào)用可以省略()號(hào)(構(gòu)造函數(shù)除外),也就是說下面兩句是等同的:

person1.setName 'kk'

person1.setName('kk')

下面看一個(gè)完整類定義的例子:

class Person {

def name

def age

String toString(){//注意方法的類型String,因?yàn)槲覀円采w的方法為String類型

"$name,$age"

}

如果你使用javabean風(fēng)格來做同樣的事,起碼代碼量要增加1倍以上。

我們可以使用默認(rèn)構(gòu)造方法實(shí)例化Person類:

def person1=new Person()

person1.name='kk'

person1.age=20

println person1

也可以用groovy的風(fēng)格做同樣的事:

def person2=new Person(['name':'gg','age':22]) //[]號(hào)可以省略

println person2

這樣需要注意我們覆蓋了Object的toString方法,因?yàn)槲覀兿胪ㄟ^println person1這樣的方法簡(jiǎn)單地打印對(duì)象的屬性值。

然而toString 方法中并沒有return 一個(gè)String,但不用擔(dān)心,Groovy 默認(rèn)返回方法的最后一行的值。

13、 ?運(yùn)算符

在java中,有時(shí)候?yàn)榱吮苊獬霈F(xiàn)空指針異常,我們通常需要這樣的技巧:

if(rs!=null){

rs.next()

… …

}

在groovy中,可以使用?操作符達(dá)到同樣的目的:

rs?.next()

?在這里是一個(gè)條件運(yùn)算符,如果?前面的對(duì)象非null,執(zhí)行后面的方法,否則什么也不做。

14、 可變參數(shù)

等同于java 5中的變長(zhǎng)參數(shù)。首先我們定義一個(gè)變長(zhǎng)參數(shù)的方法sum:

int sum(int... var) {

def total = 0

for (i in var)

total += i

return total

}

我們可以在調(diào)用sum時(shí)使用任意個(gè)數(shù)的參數(shù)(1個(gè),2個(gè),3個(gè)……):

println sum(1)

println sum(1,2)

println sum(1,2,3)

15、 枚舉

定義一個(gè)enum:

enum Day {

SUNDAY, MONDAY, TUESDAY, WEDNESDAY,

THURSDAY, FRIDAY, SATURDAY

}

然后我們?cè)趕witch語句中使用他:

def today = Day.SATURDAY

switch (today) {

//Saturday or Sunday

case [Day.SATURDAY, Day.SUNDAY]:

println "Weekends are cool"

break

//a day between Monday and Friday

case Day.MONDAY..Day.FRIDAY:

println "Boring work day"

break

default:

println "Are you sure this is a valid day?"

}

注意,switch和case中可以使用任何對(duì)象,尤其是可以在case中使用List和范圍,從而使分支滿足多個(gè)條件(這點(diǎn)跟delphi有點(diǎn)象)。

同java5一樣,groovy支持帶構(gòu)造器、屬性和方法的enum:

enum Planet {

MERCURY(3.303e+23, 2.4397e6),

VENUS(4.869e+24, 6.0518e6),

EARTH(5.976e+24, 6.37814e6),

MARS(6.421e+23, 3.3972e6),

JUPITER(1.9e+27,7.1492e7),

SATURN(5.688e+26, 6.0268e7),

URANUS(8.686e+25, 2.5559e7),

NEPTUNE(1.024e+26, 2.4746e7)

double mass

double radius

Planet(double mass, double radius) {

this.mass = mass;

this.radius = radius;

}

void printMe() {

println "${name()} has a mass of ${mass} " +

"and a radius of ${radius}"

}

}

Planet.EARTH.printMe()

16、 Elvis操作符

這是三目運(yùn)算符“?:”的簡(jiǎn)單形式,三目運(yùn)算符通常以這種形式出現(xiàn):

String displayName = name != null ? name : "Unknown";

在groovy中,也可以簡(jiǎn)化為(因?yàn)閚ull在groovy中可以轉(zhuǎn)化為布爾值false):

String displayName = name ? name : "Unknown";

基于“不重復(fù)”的原則,可以使用elvis操作符再次簡(jiǎn)化為:

String displayName = name ?: "Unknown"

17、 動(dòng)態(tài)性

Groovy所有的對(duì)象都有一個(gè)元類metaClass,我們可以通過metaClass屬性訪問該元類。通過元類,可以為這個(gè)對(duì)象增加方法(在java中不可想象)!見下面的代碼,msg是一個(gè)String,通過元類,我們?yōu)閙sg增加了一個(gè)String 類中所沒有的方法up:

def msg = "Hello!"

println msg.metaClass

String.metaClass.up = { delegate.toUpperCase() }

println msg.up()

通過元類,我們還可以檢索對(duì)象所擁有的方法和屬性(就象反射):

msg.metaClass.methods.each { println it.name }

msg.metaClass.properties.each { println it.name }

甚至我們可以看到我們剛才添加的up方法。

我們可以通過元類判斷有沒有一個(gè)叫up的方法,然后再調(diào)用它:

if (msg.metaClass.respondsTo(msg, 'up')) {

println msg.toUpperCase()

}

當(dāng)然,也可以推斷它有沒有一個(gè)叫bytes的屬性:

if (msg.metaClass.hasProperty(msg, 'bytes')) {

println msg.bytes.encodeBase64()

}

18、 Groovy swing

到現(xiàn)在為止,我們的groovy一直都在控制臺(tái)窗口下工作。如果你還不滿足,當(dāng)然也可以使用swingbuilder來構(gòu)建程序:

import groovy.swing.SwingBuilder

import java.awt.BorderLayout

import groovy.swing.SwingBuilder

import java.awt.BorderLayout as BL

def swing = new SwingBuilder()

count = 0

def textlabel

def frame = swing.frame(title:'Frame', size:[300,300]) {

borderLayout()

textlabel = label(text:"Clicked ${count} time(s).",

constraints: BL.NORTH)

button(text:'Click Me',

actionPerformed: {count++; textlabel.text =

"Clicked ${count} time(s)."; println "clicked"},

constraints:BorderLayout.SOUTH)

}

frame.pack()

frame.show()

怎么樣?是不是跟java 中寫swing程序很象?

五、單元測(cè)試

1、 添加junit

使用 Build PathàAdd Libraries... 把junit添加到項(xiàng)目中。

2、 新建測(cè)試

使用 New à Junit Test Case 新建測(cè)試?yán)蹋篜ersonTest,在Class under test右邊的Browser按鈕,選擇要進(jìn)行測(cè)試的groovy類Person。

Finish,下面編寫測(cè)試用例代碼(我使用了Junit4):

import org.junit.*;

public class TestPerson {

@Test

public void testToString(){

Person p=new Person(); //注意因?yàn)間roovy編譯Person時(shí)默認(rèn)所有屬性為private

p.setName("ddd"); //所以用set方法設(shè)置name屬性而不用p.name=”ddd”

p.setAge(18);

Assert.assertEquals("ddd-18", p.toString());

}

}

運(yùn)行Run AsàJunit Test,發(fā)現(xiàn)testToString通過測(cè)試。

3、使用groovy書寫測(cè)試用例

除了使用Java來書寫測(cè)試用例以外,我們也可以使用groovy書寫。

New à Other à Groovy à Groovy Class,寫一個(gè)類GroovyTestPerson:

import org.junit.*;

class GroovyTestPerson {

@Test

void testToString(){

Person p=new Person("name":"ddd","age":18)

Assert.assertEquals("ddd-18", p.toString())

}

}

可以看到,這里使用的完全是Groovy風(fēng)格的書寫方式:不需要public,使用map參數(shù)構(gòu)造對(duì)象。然而當(dāng)你Run AsàJunit Test的時(shí)候,結(jié)果跟用java編寫的測(cè)試用例沒有什么兩樣。

這也充分說明了,groovy和java,除了語法不一樣,本質(zhì)上沒有什么區(qū)別(對(duì)比.net framework中的C#和VB.net,它們除了語法不同外,本質(zhì)上它們都使用CLR)。

Groovy 基本語法

由 lichiabor 創(chuàng)建,Alma 最后一次修改 2016-12-12

為了了解Groovy的基本語法,讓我們先看看一個(gè)簡(jiǎn)單的Hello World程序。

創(chuàng)建你的第一個(gè)Hello World程序

創(chuàng)建Hello World程序,你只要輸入以下幾行簡(jiǎn)單的代碼就可實(shí)現(xiàn) -

class Example {

static void main(String[] args) {

// Using a simple println statement to print output to the console

println('Hello World');

}

}

當(dāng)我們運(yùn)行上面的程序,我們會(huì)得到以下結(jié)果 -

Hello World

在Groovy中導(dǎo)入語句

import語句可以用來導(dǎo)入,可以在你的代碼可以使用其他庫的功能。這是通過使用在 Import 關(guān)鍵字完成。

下面的示例演示了如何使用MarkupBuilder的類,它可能是最常用的創(chuàng)建HTML或XML標(biāo)記的類之一。

import groovy.xml.MarkupBuilder

def xml = new MarkupBuilder()

默認(rèn)情況下,Groovy在代碼中包括以下庫,因此您不需要顯式導(dǎo)入它們。

import java.lang.*

import java.util.*

import java.io.*

import java.net.*

import groovy.lang.*

import groovy.util.*

import java.math.BigInteger

import java.math.BigDecimal

Groovy令牌

令牌可以是一個(gè)關(guān)鍵字,一個(gè)標(biāo)識(shí)符,常量,字符串文字或符號(hào)。

println(“Hello World”);

在上面的代碼行中,有兩個(gè)令牌,首先是關(guān)鍵詞的println而接下來就是字符串的“Hello World”。

Groovy評(píng)論

在您的代碼中使用注釋。Groovy的注釋可以是單行或多行。

單行注釋使用//在該行的任何位置來識(shí)別。一個(gè)例子如下所示 -

class Example {

static void main(String[] args) {

// Using a simple println statement to print output to the console

println('Hello World');

}

}

多行注釋標(biāo)識(shí)與在開始/ *和* /識(shí)別多行注釋的末尾。

class Example {

static void main(String[] args) {

/* This program is the first program

This program shows how to display hello world */

println('Hello World');

}

}

分號(hào)

就像Java編程語言,它需要具有分號(hào)在Groovy定義多個(gè)語句之間進(jìn)行區(qū)分。

class Example {

static void main(String[] args) {

// One can see the use of a semi-colon after each statement

def x = 5;

println('Hello World');

}

}

上述例子示出了分號(hào)使用了不同行的代碼語句之間進(jìn)行區(qū)分。

身份標(biāo)識(shí)

標(biāo)識(shí)符被用來定義變量,函數(shù)或其他用戶定義的變量。標(biāo)識(shí)符以字母開頭,美元或下劃線。他們不能以數(shù)字開頭。以下是有效標(biāo)識(shí)符的一些例子

def employeename

def student1

def student_name

其中,DEF是在Groovy用來定義標(biāo)識(shí)符的關(guān)鍵字。

下面是一個(gè)如何在我們的Hello World程序中使用標(biāo)識(shí)符的代碼示例。

class Example {

static void main(String[] args) {

// One can see the use of a semi-colon after each statement

def x = 5;

println('Hello World');

}

}

在上述的例子中,變量x被用作標(biāo)識(shí)符。

  • 下載地址