Groovy基本語法(1)

2、Starting Groovy 

      相比於一個傳統的Java類,一個包含main方法的Groovy類可以如下書寫:

代碼1:具有main函數的Groovy類

package plswg.edu.groovy.basic


// 利用class關鍵字創建一個groovy類
class G01_HelloWorldClass {

	// 靜態的main方法作爲程序入口
	static main(args) {
		
		// 使用println命令輸出
		println "HelloWorld in class"
	}

}

       和Java一樣,程序會從這個類的main方法開始執行,和Java的區別是:

  • class前省略public修飾;
  • main方法前省略public修飾;
  • main方法省略返回值類型void;
  • main方法形參列表省略類型String[];
      當然,這只是Groovy代碼的一種寫法,實際上執行Groovy代碼完全可以不必需要一個類或main方法,所以更簡單的寫法如下:

package plswg.edu.groovy.basic


// 對於groovy程序來說,可以沒有類和main方法,直接書寫的代碼就可以作爲腳本運行
println "HelloWorld in script"

      這段代碼仍可以直接運行。

      實際上,最終編譯器仍會爲這段代碼生成一個類,類名和文件名相同,只不過從源碼的角度上,確實不用寫類或者main方法了,這一點很像Javascript等其它腳本語言。

      可以注意到,Groovy將Java中繁瑣的System.out.println簡化爲了println,甚至可以不爲形參列表加括號,這都是允許的,Groovy非常簡潔,甚至不要求語句末尾的分號(當然,寫上分號也無傷大雅)

3、Groovy變量

      既然是腳本語言,Groovy的變量也被設計成爲了類似的弱類型,實際上Groovy同時支持強類型變量和“弱”類型變量,強類型變量擁有自己的類型,而“弱”類型變量則全部會被編譯爲Object類型,從代碼的角度上,Groovy的變量無需聲明類型了:

package plswg.edu.groovy.basic

// groovy可以使用類型確定的變量或常量

String s1 = "Hello "
print s1

final String s2 = "World"
println s2

// 利用def關鍵字可以定義可變類型的變量或常量

def s3 = "Welcome "
print s3

// 對於可變類型,即隨時可以改變其類型,賦予不同的量

s3 = 123		// 此時str3被賦予了整型量,所以其類型變爲Integer類型
println s3

s3 += 100		// 整型的str3和整型相加,結果是整型223
println s3

s3 = true		// str3目前是boolean類型
println ("Ok " + s3)


// 對於局部變量,甚至可以不使用def關鍵字來定義
s4 = "Good job"
println s4


// 對於數值類型,有如下規則

int n1 = 10
n2 = n1 / 3
println n2		// 對於n1爲整數時, 10 / 3的結果並不是整數,這說明常量n2並不是整數

int n3 = n1 / 3		// 明確定義n3爲整數後,相除的結果爲整數
println n3

n2 = n1.intdiv(3)
println n2		// intdiv用於進行整除

n2 = n1.power(2)	// 求平方	groovy方法
println n2

n2 = n1 ** 2		// 求平方的groovy語法
println n2

n1 = Math.sqrt(n2)	// 求開方	java方法
println n1
      從上面的代碼可以看到,Groovy支持有類型的變量,例如String s;也支持無類型的變量,例如def s,相當於Java中的Object s;對於無類型的變量,甚至可以不寫def關鍵字。

      final關鍵字依然作爲常量標識,這一點和Java相同。

      最後注意一點,Groovy中沒有Java中的值類型簡單對象,所有的對象都是引用類型對象,例如定義def n = 10,n的類型應該是Integer類型而不是int類型;即便定義了int n = 100,n的類型依然是Integer類型;如果定義了def n = 12.34,則注意,n的類型是BigDecimal類型而不是Double類型,只有顯式定義double n = 12.34,n的類型才明確爲Double類型(依舊不是double類型)

      對於基本算術運算符,Groovy增加了**運算符,表示求冪,x ** y表示求x的y次方;


發佈了51 篇原創文章 · 獲贊 7 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章