六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 16|回复: 0

groovy学习笔记

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-2-7 16:05:01 | 显示全部楼层 |阅读模式
groovy出了挺长时间了,但是一直采取观望态度,看到今年发展很迅速,决定学习一下,上午看了一篇文章,文章地址:
https://www6.software.ibm.com/developerworks/cn/education/java/j-groovy/index.html

做一点笔记,记录几个关键的特性

1.方法默认都是public,属性默认都是private,默认给所有属性加了getter和setter方法。可以省略方法的括号,可以直接点出属性来赋值(groovy自动调用get和set方法),可以省略return ,即执行到的最后一行代码就是返回值

2.可以用def定义无变量,groovy自动判断类型
def value = "Hello World"


3.各种for写法
for(i = 0; i < 5; i++)// 省略i的类型声明的for循环
for(i in 1..5)  // i在1 到 5的取值范围内循环,相当于i<=5
for(i in 0..<5) // i在0到4的取值范围循环,相当于i<5

4. 方法中,设置参数的默认值,有默认值的话可以省略传值
def repeat(val, repeat=5){

5. 数组List
def coll = ["Groovy", "Java", "Ruby"] // 生成的是ArrayList实例

// 下面是给List添加项目的几个方法
coll.add("Python")
coll << "Smalltalk"
coll[5] = "Perl"

// 可以对List进行 +和-的操作
def numbers = [1,2,3,4]
numbers + 5 // 数组最后,添加一个5,成为[1,2,3,4,5]
numbers - [2,3] // 从数组中减去2个项目2,3,成为[1,4]

// List的几个方便的方法
def numbers = [1,2,3,4]
assert numbers.join(",") == "1,2,3,4" // 生成String,用,号分隔各项
assert [1,2,3,4,3].count(3) == 2 //计数“3”的数量

6. Map
def hash = [name:"Andy", "VPN-#":45] // 生成的是LinkedHashMap的实例,例子中的name会自动认为是String的key

// 添加Map中映射的方式
hash.put("id", 23)  // java风格
hash.id=23 // groovy风格
hash["id"] == 23 // 另一种经常见到的风格

7.闭包
// 遍历List:
def acoll = ["Groovy", "Java", "Ruby"]
acoll.each{
println it // it是代表当前项的关键字
}

// 传参,以改变it关键字
def acoll = ["Groovy", "Java", "Ruby"]
acoll.each{ value ->     // 这种传参的方式,和java语法有较大不同,还不太适应..
println value
}

// 遍历Map
def hash = [name:"Andy", "VPN-#":45]
hash.each{ key, value ->
println "${key} : ${value}"
}

// 闭包的更多使用方式:
// 声明一个闭包:
def excite = { word ->
return "${word}!!"
}

// 调用一个闭包
excite("Groovy")
excite.call("Java")

8. 定义一个类
class Song {
def name
def artist
def genre
}

实例化这个类:
def sng = new Song(name:"Le Freak",
    artist:"Chic", genre:"Disco")
可以在构造器里给属性赋值

9. 使用?号防止空指针
def song=new Song()
sng2.artist?.toUpperCase() // 再调用的属性后,加上?号,可以防止空指针,相当于以前java复杂繁琐的!=null的判断。。。。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表