打开groovyConsole,一下操作均在groovyConsole里进行操作。
一、Hello World
在编辑栏里输入以下内容
println "Hello, World!"
然后按Ctrl+R,输出结果如下:
groovy> println "Hello World"
Hello World
如果你用groovysh运行,可以发现结果为:
groovy:000> println "Hello World!"
Hello World!
===> null
后面有个===> null,这里可以简单理解为“结果是:”或者“返回值是:”(个人理解)。
再输入123+45*67,Ctrl+R,输出结果为:
groovy:000> 123+45*67
===> 3138
输入 return 123+45*67,输出结果为:
groovy:000> return 123+45*67
===> 3138
这样就证实了我的个人理解。
二、变量
在groovyConsole里输入以下内容:
x = 1
println x
x = new java.util.Date()
println x
x = -3.1499392
println x
x = false
println x
x = "Hi"
println x
输出结果为:
groovy> x = 1
groovy> println x
groovy> x = new java.util.Date()
groovy> println x
groovy> x = -3.1499392
groovy> println x
groovy> x = false
groovy> println x
groovy> x = "Hi"
groovy> println x
1
Wed Sep 26 14:02:44 CST 2012
-3.1499392
false
Hi
groovy为动态语言,这里不需要考虑变量的类型了(用java的也是很讨厌类型转换中出问题的)。
三、Lists和Maps
Groovy语言的内置支持两个重要的数据类型,lists和maps(Lists可以像Java语言中数组一样使用)。lists是用于存储数据的有序集合。
例如,您最喜爱的整数集合可能看起来像这样:
myList = [1776, -1, 33, 99, 0, 928734928763]
你可以用方括号[]来访问给定的list的元素(索引从0开始),如
println myList[0]
输出结果为:
1776
同时你可以用size方法来获取list长度,如:
println myList.size()
输出结果为:
6
但一般来说,你不应该需要的长度,因为与Java不同,在一个list中的所有元素循环的首选方法是使用“each”的方法,下面描述的“Code as Data”部分的代码。
另一种数据结构被称为map。map是用来存储的“关联数组”或“字典”。这是无序的异类,已命名的数据的集合。例如,让我们说,我们要存储的名称与IQ分数,我们可能有:
scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]
请注意,存储在map的每一个的值是不同的类型。 Brett的是一个整数,皮特是一个字符串,安德鲁是一个浮点数。我们可以访问的地图主要以两种方式中的值:
println scores["Pete"]
println scores.Pete
输出结果为:
Did not finish
Did not finish
在Map中添加数据和在List中加数据的形式是相似的。比如:Peter重新测试的IQ结果为3,我们以为这么写:
scores["Pete"] = 3
然后输出:
println scores["Pete"]
结果为3,所以类型转换完全不费脑啊。
顺便说一句,你可以用下面创建一个空的Map或一个空List:
emptyMap = [:]
emptyList = []
验证是否为空:
println emptyMap.size()
println emptyList.size()
两者结果都是0.
四、条件执行
其他编程语言最重要的功能之一就是不同条件下执行不同的代码,最简单的就是用“if”结构,如:
amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
println("Good morning")
} else {
println("Good evening")
}
这时根据你的时间进行判断,我这时输出的就是:
Good evening
代码的第一行是对于确定它是中午十二时前或后的判断,后面的代码就不赘述了,条件判断和java是一致的。
五、布尔表达式
布尔表达式,编程语言中用来判断真假的值。
myBooleanVariable = true
groovy中逻辑判断符号如下:
==
!=
>
>=
<
<=
这些符号很好理解,下面举个例子:
titanicBoxOffice = 1234600000
titanicDirector = "James Cameron"
trueLiesBoxOffice = 219000000
trueLiesDirector = "James Cameron"
returnOfTheKingBoxOffice = 752200000
returnOfTheKingDirector = "Peter Jackson"
theTwoTowersBoxOffice = 581200000
theTwoTowersDirector = "PeterJackson"
titanicBoxOffice > returnOfTheKingBoxOffice // 结果为 true
titanicBoxOffice >= returnOfTheKingBoxOffice // 结果为 true
titanicBoxOffice >= titanicBoxOffice // 结果为 true
titanicBoxOffice > titanicBoxOffice // 结果为 false
titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice // 结果为 false
titanicDirector > returnOfTheKingDirector // 结果为 false, 因为"J"在"P"前面
titanicDirector < returnOfTheKingDirector // 结果为 true
titanicDirector >= "James Cameron" // 结果为 truetitanicDirector == "James Cameron" // 结果为 true
boolean判断式结合if语句,就是我们常用的结构了,如:
if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)
{
println(titanicDirector + " is a better director than " + returnOfTheKingDirector)
}
一个特别有用的测试是测试变量或表达式是否为空(没有值)。例如,让我们说,map是否有给定的key:
suvMap = ["Acura MDX":"\$36,700", "Ford Explorer":"\$26,845"]
if (suvMap["Hummer H3"] != null)
{
println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);
}
显然我们得到的结果为null。
六、调试和故障排除技巧