簡(jiǎn)單介紹
Groovy 是對(duì)java的擴(kuò)展
不用定義類型
有閉包概念
有新的循環(huán)
結(jié)尾省略分號(hào)
java
public class Test{
public static void main(String [] args){
System.out.println("Hello World");
}
}
groovy
println("Hello world');
與java的不同
1.不需要引入包--
imported by default
2.?dāng)?shù)組的初始化 --groovy的{}用于閉包
java int [] a={1,2,3};
groovy int a[] = [1,2,3]
3.沒(méi)有private
class Test{ @PackageScope String name }
- 自動(dòng)資源管理
Groovy不支持java7中的自動(dòng)資源管理儡首,但是它使用閉包提供了實(shí)現(xiàn)相同功能的方法硅蹦,但是方法更好
- 內(nèi)部類
(1)靜態(tài)內(nèi)部類
class A{
static class B{ }
}
new A.B();
(2)匿名內(nèi)部類
- java 8 支持
lambdas表達(dá)式 and method references殃姓,groovy 由閉包代替?人断??朝蜘?
Groovy 支持Gstring 所以String 中包含“$”有可能解析錯(cuò)誤
單引號(hào)在Groovy中被認(rèn)為是String,雙引號(hào)可能是String or GString
assert 'aaa'.getClass() == String assert
"aaaa".getClass() == String assert "a${1}".getClass() in GString
9. primitives and wrappers ???? 原語(yǔ)和包裝
groovy 不會(huì)擴(kuò)大類型
int i i in long
int i i in Integer
-
在Groovy中《衤酢== 為 java中的 equale()
is() 為java 中的= 對(duì)象引用是否相同
在自動(dòng)裝箱拆箱上有不同,有擴(kuò)展
更多的關(guān)鍵字
as def in trait
- default 必須放在switch 的最后一個(gè)case
groovy 官方文檔
http://groovy-lang.org/documentation.html
精通groovy
http://www.ibm.com/developerworks/cn/education/java/j-groovy/j-groovy.html
Differences with java
http://www.groovy-lang.org/differences.html