`
rsljdkt
  • 浏览: 451952 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Groovy学习笔记之快速入门篇(一)

阅读更多

关于Groovy

Groovy是什么?简单的说,Groovy是下一代的Java语言,和Java一样,运行在JVM中。GroovyJavaJVM的关系就像C#VB.NETCLR的关系一样。

开发环境

本人开发环境:

JDK1.6 + Eclipse3.6 + Groovy-Eclipse 2.1.1

Groovy语法简介

1、没有类型的Java

作为动态语言,Groovy中的所有变量都是对象,在声明变量时,Groovy不要求强制类型声明(当然,强制类型声明也没有语法错误),仅仅要求使用关键字def(有些情况下,甚至连def都不需要)。

  l Groovy变量在运行时确定,类型为变量所指对象的类型。

def var = "HelloWorld"
println "${var},${var.class}"
var = true
println "${var},${var.class}"

     上面代码中变量替换${var}会被var 内容所替代

2、不需要的public

可以把main方法前的public去掉,实际上,Groovy里的方法默认是public

甚至可以把main方法去掉,整个groovy文件中只留下package语句

3、不需要的语句结束符

Groovy语句没有结束符。当然,为了与Java保持一致,在每个语句后加上分号结束符也是正确的。

4、字符串的连接

  l 方法一:类似Java的方法:

def var = "Hello"+
		"World,"+
		"Groovy"
println var

 

  l 方法二:更groovy的写法:

def var = """Hello
		World,
		Groovy"""
println var

     上面代码实质上是允许字符串跨行(空白字符会保留)

5、for循环

  l 方式一:类似Java的写法:

for(int i = 0; i<5; i++){
	println i
}

 

  l 方式二:Groovy的写法:

for(i = 0; i<5; i++){
	println i
}

 

  l 方式三:Groovy的写法(使用“范围”)

for(i in 0..<5){
	println i
}

 

6、StringGString

1. Groovy支持标准的java.lang.String(用单引号括住)和GString(用双引号括住)。

2. GString支持变量替代,如"this ${var}"

3. String/GString支持下标索引访问,和简化的取紫川操作,代码如下:

 def str = "Hello World!"
 println str[0]
 println str[0..5]		//输出Hello

 

7、范围

范围的概念和Pascal的“子界”一样,是一系列的值,例如:

0..4”表示包含整数01234

0..<4”表示包含整数0123

a..e”表示包含字母abcde

8、方法

  l Groovy的方法支持默认参数值,在不引起歧义的情况下,方法的调用可以省略圆括号:

def repeat(var,time=5){
	for(i in 0..<time){
		println var
	}
}
repeat 'Hello World!'

     上面的repeat重复打印var参数,默认重复次数是5

  l 可变参数:

def sum(int...vars){
	def total = 0
	for(i in vars){
		total += i
	}
	return total
}
println sum(1,2,3)

 

9、集合

Groovy支持最常见的两个Java结合:java.util.Collectionojava.util.Map

上面提到的“范围”实际上也是结合的一种(java.util.List

   l Collection

(1)集合的定义:

def col = [1,2,3]

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

 

(2)集合操作(添加、删除、连接)

	col.add 4				//添加一个元素
	col << 5.1			//添加一个元素
	col[col.size()]='6'	//添加一个元素
	col += 7				//添加一个元素
	col -= '6'			//减去一个元素'6'
	col += ['8','9']		//添加一个集合
	col -=col[6..7]		//减去一个集合
	println col.join('-')//输出用'-'连接的所有集合元素

 

(3)集合的索引

     数组下标方式:

	println col[0]	//输出第0个元素

 

     负索引(索引倒数第几个元素):

	println col[-1]	//输出倒数第1个元素

 

几点说明:

1.使用 [value, ...] 来初始化

2.使用 [] 来声明一个空Collection

   l Map

Map是“键-值”对的集合,在Groovy中,键可以是任意类型的对象(实际上Groovy中的Map就是java.util.LinkedHashMap

(1)map的定义:

	def map = ['name':'ZhangSan','sex':'M','age':15]

 

(2)Map添加项

	map.put 'height', 180
	map += ['weight':70]
	map.father = 'LiSi'

 

(3)Map索引

	println map['father']
	println map.name
	println map.age

    几点说明:

1. 使用 [name:value, ...] 的方式来初始化

2. 使用 [ ; ] 的方式来声明一个空Map

   l Range

RangeGroovy中的一个集合类,继承自java.util.List,所以可以像使用List一样使用。

下面是Range的使用示例:

	def range = 3..10
	assert range.size() == 8
	assert range.get (1) == 4
	assert range instanceof java.util.List
	assert range.contains (8)

    几个说明:

1. Range元素的类型可以是intchar

2. 通过“范围”来初始化

3. 可以像其他集合一样使用

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment-->

<!--EndFragment--> ---------------------------华丽的分割线-----------------------------

未完待续

<!--EndFragment-->
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics