Groovy基本使用(2):基本語法
阿新 • • 發佈:2019-01-30
Groovy 基本語法
Groovy 是一種動態型別的 JVM 敏捷開發語言,基本的語法和 Java 十分相似,很多關鍵字直接使用 Java 的關鍵字,如:import 匯入類,//、/**/ 標記註釋,使用和 Java 類似運算子 等等;一個基本的示例
Helloworld.groovyclass HelloWorld {
static void main(String[] args){
println('Hello world ,Welcome to Groovy!');
}
}
當然 groovy 可以直接以指令碼的形式編寫,如下:
test.groovy執行時候直接在控制檯定位到 test.groovy 目錄下,以如下方式啟動 groovy 指令碼def name = 'assad'; println "Hello ${name}"; println 'Welcome to groovy';
groovy test.groovy
匯入類
groovy 使用 import 關鍵字匯入類,其預設預先匯入的類如下: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 內建以下的資料型別:byte、變數
Groovy 中宣告變數的方式有2種,使用顯式宣告變數型別,或者使用 def 關鍵字宣告動態型別;String str = 'are you ok'; int num = 12; def str2 = 'are you ok?'; def num2 = 14; println("str="+str+"num="+num+"str2="+str2+"num2="+num2);
運算子
Groovy 對以下運算子的支援同 Java :- 算術運算子:+ - * / % ++ --
- 關係運算符:== >= <= > <
- 邏輯運算子:&& || !
- 位運算子:& | ^ ~
- 賦值運算子:+= -= *= /= (%)=
1..10 - 包含範圍的示例
1 .. <10 - 獨佔範圍的示例
'a'..'x' - 範圍也可以由字元組成
10..1 - 範圍也可以按降序排列
'x'..'a' - 範圍也可以由字元組成並按降序排列。
這些範圍運算子主要用在定義一個有序序列(可以用在迴圈控制等地方),如下示例:String str = 'are you ok';
int num = 12;
def str2 = 'are you ok?';
def num2 = 14;
println("str="+str+"num="+num+"str2="+str2+"num2="+num2);
這些範圍運算子產生的物件支援以下方法:
contains() | 檢查範圍是否包含特定值 |
get() | 返回此範圍中指定位置處的元素 |
getFrom() | 獲得此範圍的下限值 |
getTo() | 獲得此範圍的上限值 |
isReverse() | 判斷該範圍是否是一個反向的範圍 |
size() | 返回此範圍的元素數 |
subList() | 返回此指定的fromIndex(包括)和toIndex(排除)之間的此範圍部分的檢視 |
Groovy 的判斷語句語法 if,if else,switch ,迴圈語句 while,for,for-in,迴圈控制語句 break,continue 語法同 Java 中的一致;其中 for-in 可以搭配範圍型別使用,代替列表迴圈傳統的for結構;
列表 List
Groovy 中,List儲存了一系列物件的引用,類似 Java,使用整數作為索引;使用 [ ] 來表示列表,有以下這些表示:[11,12,13,14] - 整數值列表
['Angular','Groovy','Java'] - 字串列表
[1,2,[3,4],5] - 巢狀列表
['Groovy',21,2.11] - 異構的物件引用列表
[] - 一個空列表
基本的使用如下:def list = [1,2,3,4,5];
println(list); //output:[1, 2, 3, 4, 5]
println(list.get(1));
list.add(6);
list.set(3,7)
列表物件支援的方法如下:add() | 將新值附加到此列表的末尾 |
get() | 返回此列表中指定位置的元素 |
set() | 設定列表中指定位置的元素值 |
contains() | 如果此列表包含指定的值,則返回true |
isEmpty() | 如果此列表不包含元素,則返回true |
remove() | 刪除此列表中指定位置的元素 |
pop() | 從此列表中刪除最後一個專案 |
reverse() | 建立與原始列表的元素相反的新列表 |
size() | 獲取此列表中的元素數 |
sort() | 返回原始列表的排序副本(升序) |
對映 Map
對映(關聯陣列)是物件引用的無序集合。Map集合中的元素由鍵值訪問。 Map中使用的鍵可以是任何類,同樣使用 [ ] 表示對映,一些表示如下:['TopicName':'Lists','TopicName':'Maps'] - 具有TopicName作為鍵的鍵值對的集合及其相應的值。
[:] - 空對映
支援的常用方法如下:containsKey() | 判斷此Map是否包含指定key |
get() | 查詢此Map中的 key 並返回相應的 value。如果此對映中沒有鍵的條目,則返回null |
keySet() | 獲取此Map中的所有Key組成的Set |
put() | 將指定的 Value 與此 Map 中的指定 Key 相關聯。如果此對映先前包含此鍵的對映,則舊值將替換為指定的值 |
size() | 返回此Map 中的 key-value 對映的數量 |
values() | 獲取此Map中的所有 value 組成的Set |
字串
Groovy 對於字串的引用,可以使用 "string",'string',"""string""" 這3中方式;“”和 ' ' 的區別類似於 PHP,' ' 用於引用純字面量的字串," " 除了可以引用純字面量的的字串外,還可以引用模板引擎,一個簡單的示例如下:def str1 = "Hello!";
def str2 = "${str1} welcome to groovy!" ;
println(str1); //output: Hello!
println(str2); //output: Hello! welcome to groovy!
""" 可以用於引用跨行的字面量:def str = """are you ok,
my friend ?
welcome to groovy!""";
Groovy 對於字串變數可以才採用類似C++的方式,進行字串索引,同時對於索引值支援 range 範圍型別,如下:def str1 = "Are you ok?";
def ch = str1[0]; //ch = "A";
def ch2 = str1[2]; //ch2 = "e";
def subStr = str1[0..2]; //subStr = "Are"
Groovy 字串的方法基本類似於Java String類的方法;Groovy 字串提供了 ==~ 運算子用於正則表示式的匹配,示例的用法如下:def regix = '.*oo.*'; //正則表示式字串
def str = 'groovy' //待匹配的字串
Boolean result = str ==~ regix; //result = true;
方法
Groovy 的方法宣告和呼叫基本類似於 Java,不過 Groovy 方法返回型別可以設定為 def,引數型別可以不用宣告,修飾符不宣告預設為public ;int sum(int num1,int num2 ){ //groovy完全支援Java一樣的方法宣告
return num1 + num2;
}
def sum(num1,num2){ //動態型別的宣告
return num1 + num2;
}
groovy 方法還支援預設引數def sum(num1 = 1,num2 = 2){
return num1 + num2;
}
static main(String[] args){
println(sum(4,4)); //output: 8
println(sum()); //output: 3
}