w3cschool-Groovy 教程


Groovy的特點

Groovy中有以下特點:

  • 同時支持靜態和動態類型。
  • 支持運算符重載。
  • 本地語法列表和關聯數組。
  • 對正則表達式的本地支持。
  • 各種標記語言,如XML和HTML原生支持。
  • Groovy對於Java開發人員來說很簡單,因為Java和Groovy的語法非常相似。
  • 您可以使用現有的Java庫。
  • Groovy擴展了java.lang.Object。

Groovy 環境 

groovy---安裝指南
brew install groovy
export GROOVY_HOME=/usr/local/opt/groovy/libexec
看到這個說明已經安裝好了, 然后有一段話:
You should set GROOVY_HOME: export GROOVY_HOME=/usr/local/opt/groovy/libexec
意思是你應該設置groovy環境變量
vi ~/.bash_profile
將下面的語句添加進去
GROOVY_HOME: export GROOVY_HOME=/usr/local/opt/groovy/libexec
然后使用groovy -version命令去查看下
hanwenda@bogon bin % vi ~/.bash_profile
hanwenda@bogon bin % source ~/.bash_profile
hanwenda@bogon bin % groovy -veresion
Groovy Version: 4.0.0 JVM: 1.8.0_321 Vendor: Oracle Corporation OS: Mac OS X

有多種方式來獲得的Groovy環境設置。

下載和安裝 -進入該鏈接www.groovy-lang.org/download.html獲得Windows安裝程序部分。

Groovy的環境設置

啟動Groovy安裝程序,然后請執行以下完成安裝步驟。

第1步 -選擇語言安裝程序。

語言安裝

第2步 -點擊下一步按鈕。

Groovy的2.4.5安裝

第3步 -點擊“我同意”按鈕。

許可協議

第4步 -接受默認組件,然后單擊下一步按鈕。

選擇組件

第5步 -選擇適當的目標文件夾,然后單擊下一步按鈕。

安裝位置

第6步 -點擊安裝按鈕開始安裝。

開始菜單文件夾

第7步 -一旦安裝完成后,單擊下一步按鈕開始配置。

安裝完成

第8步 -選擇默認選項,並單擊下一步按鈕。

環境變量

第9步 -接受默認的文件關聯,然后單擊下一步按鈕。

文件關聯

第10步 -單擊Finish按鈕完成安裝。

Finish按鈕

一旦上述步驟之后,你就可以開始使用Groovy shell,有助於測試我們的Groovy,而不需要為Groovy提供一個完整的集成開發環境。可以通過在命令提示符下命令groovysh來完成。

運行命令Groovysh

 

如果你想包含groovy二進制文件作為maven或gradle構建的一部分,你可以添加以下行

 Gradle

'org.codehaus.groovy:groovy:2.4.5'

Maven

<groupId>org.codehaus.groovy</groupId> 
<artifactId>groovy</artifactId>  
<version>2.4.5</version>

內置數據類型

Groovy提供多種內置數據類型。以下是在Groovy中定義的數據類型的列表 -

  • byte -這是用來表示字節值。例如2。

  • short -這是用來表示一個短整型。例如10。

  • int -這是用來表示整數。例如1234。

  • long -這是用來表示一個長整型。例如10000090。

  • float -這是用來表示32位浮點數。例如12.34。

  • double -這是用來表示64位浮點數,這些數字是有時可能需要的更長的十進制數表示。例如12.3456565。

  • char -這定義了單個字符文字。例如“A”。

  • Boolean -這表示一個布爾值,可以是true或false。

  • String -這些是以字符串的形式表示的文本。例如,“Hello World”的。

數字類

類型除了基本類型,還允許以下對象類型(有時稱為包裝器類型)-

  • java.lang.Byte
  • java.lang.Short
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Float
  • java.lang.Double

此外,以下類可用於支持高精度計算 -

名稱 描述 例如
java.math.BigInteger 不可變的任意精度的有符號整數數字 30克
java.math.BigDecimal 不可變的任意精度的有符號十進制數 3.5克

算術運算符

Groovy語言支持正常的算術運算符任何語言。以下是在Groovy中可用的算術運算符 -

顯示示例

運算符 描述 例子
+ 兩個操作數的加法 1 + 2 將得到 3
- 第一第二操作數相減 2 - 1 將得到 1
* 兩個操作數的乘法 2 * 2 將得到4 
/ 兩個操作數的除法 3/2 將得到 1.5
取模運算 3%2 將得到 1
++ 自增運算,在自身值的基礎上加1

INT X = 5;

X ++;

X 將得到 6

-- 自減運算,在自身值的基礎上減1

INT X = 5;

X - -;

X 將得到 4

 

關系運算符

關系運算符允許對象的比較。以下是在Groovy中可用的關系運算符 -

顯示示例

運算符 描述 例子
== 測試兩個對象之間是否相等 2 == 2 將得到 true
!= 測試兩個對象之間是否不等 3 != 2 將得到 true
< 檢查是否左邊的對象是小於右邊的對象。 2 < 3 將得到 true
<= 檢查是否向左對象是小於或等於右邊的對象 2 <= 3 將得到 true
> 檢查是否左邊的對象比右邊的對象大。 3 > 2 將得到 true
>= 檢查是否向左對象大於或等於右邊的對象。 3>= 2 將得到 true

邏輯運算符

邏輯運算符用於計算布爾表達式。以下是在Groovy中提供的邏輯運算符 -

顯示示例

運算符 描述 例子
&& 這是邏輯“與”運算 true && true 得到 true
|| 這是邏輯“或”運算 true || true 得到 true
這是邏輯“非”運算 !true 得到 false

位運算符

Groovy中提供了四個位運算符。以下是在Groovy中可用的位運算符 -

顯示示例

運算符 描述
這是位“與”運算
| 這是按位“或”運算
^ 這是按位“異或”或異或運算符
這是按位反運算符

這里是顯示這些運算符的真值表。

p q p&Q p | q p ^ Q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

賦值運算符

Groovy語言也提供了賦值操作符。以下是在Groovy提供的賦值運算符 -

顯示示例

運算符 描述 例子
+= A += B 等價於 A = A+B

DEF A = 5

A += 3

輸出將是8

-= A -= B 等價於 A = A-B

DEF A = 5

A -= 3

輸出將是2

*= A *= B 等價於 A= A*B

DEF A = 5

A *= 3

輸出將是15

/= A /= B 等價於 A = A/B

DEF A = 6

A /= 3

輸出將是2

(%)= A (%)= B 等價於 A = A % B

DEF A = 5

A %= 3

輸出將是2

范圍運算符

Groovy支持范圍的概念,並在..符號的幫助下提供范圍運算符的符號。下面給出了范圍運算符的一個簡單示例。

def range = 0..5 

這只是定義了一個簡單的整數范圍,存儲到一個局部變量稱為范圍內的下限為0和上限為5。

以下代碼段顯示了如何使用各種運算符。

class Example { 
   static void main(String[] args) { 
      def range = 5..10; 
      println(range); 
      println(range.get(2)); 
   } 
}

當我們運行上面的程序,我們會得到以下結果 -

從println語句中,可以看到顯示在range語句中定義的整個數字范圍。

get語句用於從定義的范圍中獲取一個對象,它將索引值作為參數。

[5, 6, 7, 8, 9, 10] 
7

運算符優先級

下表按優先級順序列出了所有groovy運算符(僅列出部分運算符)

 

運算符 名稱
++​ ​,--​  ,​+​ ​,- 預增/減(自增/減),一元加,一元減
*​,​ /​, ​ 乘法,除法,取模
+​,- 加法,減法(二元)
==​,​!=​, ​<=>​​ 等於,不等於,比較運算符
二進制/位運算符與
^ 二進制/位異或
| 二進制/按位或
邏輯非
&& 邏輯與
|| 邏輯或
=​,+=​,​-=​,​*=​,​/=​,​%=​,​**= 各種賦值運算符

 

Groovy 方法

Groovy 中的方法是使用返回類型或使用 def 關鍵字定義的。方法可以接收任意數量的參數。定義參數時,不必顯式定義類型。可以添加修飾符,如 public,private 和 protected。默認情況下,如果未提供可見性修飾符,則該方法為 public。

最簡單的方法是沒有參數的方法,如下所示:

def methodName() { 
   //Method code 
}

下面是一個簡單方法的例子

class Example {
   static void sum(int a,int b) {
      int c = a+b;
      println(c);
   }  
	
   static void main(String[] args) {
      sum(10,5);
   } 
}

Groovy 文件I/O

Groovy在使用I / O時提供了許多輔助方法,Groovy提供了更簡單的類來為文件提供以下功能。

  • 讀取文件
  • 寫入文件
  • 遍歷文件樹
  • 讀取和寫入數據對象到文件

除此之外,您始終可以使用下面列出的用於文件I / O操作的標准Java類。

  • java.io.File
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer

基本字符串操作

首先讓我們學習groovy中的基本字符串操作。它們在下面給出。

序號 字符串操作和描述
1 Concatenation of two strings

字符串的串聯可以通過簡單的'+'運算符來完成。

2 String Repetition

字符串的重復可以通過簡單的'*'運算符完成。

3 String Length

由字符串的length()方法確定的字符串的長度。

字符串方法

這里是String類支持的方法列表。

序號 方法和描述
1 center()

返回一個新的長度為numberOfChars的字符串,該字符串由左側和右側用空格字符填充的收件人組成。

2 compareToIgnoreCase()

按字母順序比較兩個字符串,忽略大小寫差異。

3 concat()

將指定的String連接到此String的結尾。

4 eachMatch()

處理每個正則表達式組(參見下一節)匹配的給定String的子字符串。

5 endsWith()

測試此字符串是否以指定的后綴結尾。

6 equalsIgnoreCase()

將此字符串與另一個字符串進行比較,忽略大小寫注意事項。

7 getAt()

它在索引位置返回字符串值

8 indexOf()

返回此字符串中指定子字符串第一次出現的索引。

9 matches()

它輸出字符串是否匹配給定的正則表達式。

10 minus()

刪除字符串的值部分。

11 next()

此方法由++運算符為String類調用。它增加給定字符串中的最后一個字符。

12 padLeft()

填充字符串,並在左邊附加空格。

13 padRight()

填充字符串,並在右邊附加空格。

14 plus()

追加字符串

15 previous()

此方法由CharSequence的 - 運算符調用。

16 replaceAll()

通過對該文本的關閉結果替換捕獲的組的所有出現。

17 reverse()

創建一個與此String相反的新字符串。

18 split()

將此String拆分為給定正則表達式的匹配項。

19 subString()

返回一個新的String,它是此String的子字符串。

20 toUpperCase()

將此字符串中的所有字符轉換為大寫。

21 toLowerCase()

將此字符串中的所有字符轉換為小寫。

Groovy 范圍

范圍是指定值序列的速記。范圍由序列中的第一個和最后一個值表示,Range可以是包含或排除。包含范圍包括從第一個到最后一個的所有值,而獨占范圍包括除最后一個之外的所有值。這里有一些范例文字的例子 -

  • 1..10 - 包含范圍的示例
  • 1 .. <10 - 獨占范圍的示例
  • 'a'..'x' - 范圍也可以由字符組成
  • 10..1 - 范圍也可以按降序排列
  • 'x'..'a' - 范圍也可以由字符組成並按降序排列。

以下是可用於范圍的各種方法。

序號 方法和描述
1 contains()

檢查范圍是否包含特定值

2 get()

返回此范圍中指定位置處的元素。

3 getFrom()

獲得此范圍的下限值。

4 getTo()

獲得此范圍的上限值。

5 isReverse()

這是一個反向的范圍,反向迭代

6 size()

返回此范圍的元素數。

7 subList()

返回此指定的fromIndex(包括)和toIndex(排除)之間的此范圍部分的視圖

 

Groovy 列表

列表是用於存儲數據項集合的結構。在 Groovy 中,List 保存了一系列對象引用。

List 中的對象引用占據序列中的位置,並通過整數索引來區分。

列表文字表示為一系列用逗號分隔並用方括號括起來的對象。

groovy 列表使用索引操作符 [] 索引。列表索引從 0 開始,指第一個元素。

groovy 中的一個列表中的數據可以是任意類型。這 java 下集合列表有些不同,java 下的列表是同種類型的數據集合。

groovy 列表可以嵌套列表。如 [1,2,[3,4,5],“aaa”] groovy 列表內置有反轉方法 reverse()。調用 List.reverse() 可以實現列表反轉。groovy 列表內置有排序方法 sort()。調用 List.sort() 可以實現列表排序。空列表表示為 [] 聲明一個空集合:

def list1 = [] def list2 = [1,2,3,4] list2.add(12) list2.add(12) println list1.size()

列表間的幾個常用方法:

1、添加:

def list1 = [100, 101] def list2 = [ 99,98,1] println list2.plus(list1) //輸出結果: [100, 101, 99, 98,1] // list2.plus(list1) 也可以寫成 list2 + list1

2、刪除:

def list1 = [12, 13] def list2 = [11, 2, 33, 12, 13, 16] println list2.minus(list1) //輸出結果: [11, 2, 33, 16] //list2.minus(list1) 也可以寫成 list2 - list1

在本章中,我們將討論 Groovy 中可用的列表方法。

序號 方法和描述
1 add()

將新值附加到此列表的末尾。

2 contains()

如果此列表包含指定的值,則返回 true。

3 get()

返回此列表中指定位置的元素。

4 isEmpty()

如果此列表不包含元素,則返回 true

5 minus()

創建一個由原始元素組成的新列表,而不是集合中指定的元素。

6 plus()

創建由原始元素和集合中指定的元素組成的新列表。

7 pop()

從此列表中刪除最后一個項目

8 remove()

刪除此列表中指定位置的元素。

9 reverse()

創建與原始列表的元素相反的新列表

10 size()

獲取此列表中的元素數。

11 sort()

返回原始列表的排序副本。

Groovy中的XML支持

Groovy語言還提供了對XML語言的豐富支持。使用的兩個最基本的XML類是 -

  • XML標記構建器 - Groovy支持基於樹的標記生成器BuilderSupport,它可以被子類化以生成各種樹結構對象表示。通常,這些構建器用於表示XML標記,HTML標記。 Groovy的標記生成器捕獲對偽方法的調用,並將它們轉換為樹結構的元素或節點。這些偽方法的參數被視為節點的屬性。作為方法調用一部分的閉包被視為生成的樹節點的嵌套子內容。

  • XML解析器 - Groovy XmlParser類使用一個簡單的模型來將XML文檔解析為Node實例的樹。每個節點都有XML元素的名稱,元素的屬性和對任何子節點的引用。這個模型足夠用於大多數簡單的XML處理。

Groovy JMX

JMX是defacto標准,用於監控與Java虛擬環境有任何關系的所有應用程序。鑒於Groovy直接位於Java之上,Groovy可以利用已經為Java實現的大量工作。

監視JVM

可以使用java.lang.management中提供的標准類來執行JVM的監視。以下代碼示例說明如何完成此操作。

Groovy JSON

JSON功能

功能
JsonSlurper

JsonSlurper是一個將JSON文本或閱讀器內容解析為Groovy數據的類

結構,例如地圖,列表和原始類型,如整數,雙精度,布爾和字符串。

JsonOutput 此方法負責將Groovy對象序列化為JSON字符串。

使用JsonSlurper解析數據

JsonSlurper是一個將JSON文本或閱讀器內容解析為Groovy數據結構的類,如地圖,列表和原始類型,如Integer,Double,Boolean和String。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM