Grovvy初识
请注意,在这段代码周围没有类结构,而且也没有方法结构!我还使用 println 代替了 System.out.println
运行Grovvy示例:
/home/amosli/developsoft/language/groovy/test/Hello.groovy



如果已经设置了Grovvy的环境变量,那么只需输入:


更快捷的方式:


如果有环境变量就变成了:


这会有相同的结果,而且甚至无须定义任何文件。
3Grovvy是没有类型的java代码
类型定义:
为什么要有类型定义:在java中,如果要声明一个String变量,则必须输入:
String value="Hello world";
但是,如果仔细想想,就会看出,等号右侧的字符已经表明 value 的类型是 String。所以,Groovy 允许省略 value 前面的 String 类型变量,并用 def 代替。
def value="hello world"
实际上,Grovvy会根据对象的值来判断他的类型。
运行程序!
将HelloWorld.grovvy文件中的代码编辑成下面这样


4.通过Grovvy进行循环
方式1:
这里可以定义i为int或者def,或者不定义其类型


方式2:
使用in进行循环,其中..表示“到”,0..5表示0到5.类似于0<=5;这里循环6次。


可以使用0..<5进行限定。类似于0<5循环5次。
5.Grovvy中的集合
1)Grovvy中的list


注意:assert命令用来证明范围是java.util.List的实例,接着运行这个代码,。证实该范围是类型List的集合。
Grovvy的语法:


coll看起来很像一个java语言中的数组,实际上他是一个Collection。要在普通的java代码中得到集合的相同实例,必须执行以下操作。


在java黛娜中,必须使用add()向ArrayList实例添加项。
而Grovvy中则提供了三种方法:


查找元素:


Grovvy中的特殊方法:


Grovvy中的特殊方法:


join()和count()只是在任何项List都可以调用的众多方法中的两个,分布操作符是个提别方便的工具,使用这个工具不要再集合上迭代,就能够调用集合每个项上的方法。
假设有一个String列表,现在想将列表中的项目全部变成大写,可以编写以下代码:
assert ["JAVA", "GROOVY"] ==
["Java", "Groovy"]*.toUpperCase()
注意*.标记。对于以上列表中的每个值,都会调用toUpperCase().生成的集合中每个String实例都是大写的。
2)Grovvy中的Map
java语言中的映射是名称-值对的集合。所以,要用java代码创建典型的映射,必须像如下这样:


Grovvy使得处理映射的操作像处理列表一样简单,例如,可以用Grovvy将上面的java映射写成:


注意:Grovvy映射中的键不必恃String.在这个示例中,name看起来像一个变量,但是在幕后,Grovvy会将它变成String.
验证hash格式:
assert hash.getClass()==java.util.LinkedHashMap
Grovvy中Hash的Set/Get


注意:在使用[]语法从映射获取项时,必须将项作为String引用。
6Grovvy中的闭包
java的Iterator实例,用它在集合上迭代,就像下面这样。


注意,each直接在acoll实例内调用,而acoll实例的类型是ArrayList.在each调用之后,引入了一种新的语法{,代码}。由{}包围起来的代码块就是闭包。


闭包中的it变量是一个关键字,指向被调用的外部集合的每个值-他是默认值,可以用传递给闭包的参数覆盖他。下面的代码执行同样的操作,但使用自己的项变量:


在这个示例中,用value代替了Grovvy的默认it.


请注意,闭包还允许使用多个参数,在上面的实例中,包含两个参数(key和value)
凡是集合或一系列的内容,都可以使用下面这样的代码进行迭代。




这段代码是名为excite的闭包,这个闭包接受一个参数(名为word)返回的String是word变量加两个感叹号。请注意String实例中替换的用法。在String中使用${value}语法将告诉Grovvy替换String中的某个变量的值。可以将这个语法当成return word+"!!"的快捷方式。


输出this is Grovvy
7Groovy中的类
新建一个类song




Groovy 自动提供一个构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应。这是 Groovy 的一项开箱即用的功能 — 用于类中定义的任何属性,Groovy 允许将存储了大量值的映射传给构造函数。映射的这种用法很有意义,例如,您不用初始化对象的每个属性。
也可以添加下面这样的代码:


也可以添加像下面这样直接操纵类的属性:


在Song类中,添加以下代码:


8 Grovvy中的单元测试


在Intellij中只需要加入@Test注解就可以使用JUnit测试
加个?可以防止空指针的错误:


9.扩展、
如果需要用Groovy做web 项目的话可以去了解一下Grails框架。
Grovvy初识的更多相关文章
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
随机推荐
- Python语言100例
Python版本:python 3.2.2 电脑系统:win7旗舰 实例来源:python菜鸟教程100例 #!/usr/bin/python # -*- coding: UTF-8 -*- impo ...
- [转]JQuery Ajax 在asp.net中使用总结
本文转自:http://www.cnblogs.com/acles/articles/2385648.html 自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些 ...
- FIR数据广播结构-提高时钟速率
直接型的信号流图 采用转置得到广播结构的信号流图 对于一个常系数四阶的FIR滤波器 直接型的RT L结构如下: 转置后的RTL结构
- 我的opencv之旅:ios人脸识别
学习opencv有一年多了,这本来是我的毕业设计的一部分,但是因为不能突出专业重点,所以换了个课题. opencv在vc.android.ios下都能用,其中vc和android下的教程和主题贴最多, ...
- 边工作边刷题:70天一遍leetcode: day 80
Palindrome Permutation I/II 要点: oddCount to increase/decrease count II: chars: 先统计,再得到一半的c,相同的在一起,所以 ...
- linux -- read(), write()
read()函数 2011-03-23 16:28:37| 分类: linux | 标签: |字号大中小 订阅 read函数从打开的设备或文件中读取数据. #include <uni ...
- Codeforces Round #274 Div.1 C Riding in a Lift --DP
题意:给定n个楼层,初始在a层,b层不可停留,每次选一个楼层x,当|x-now| < |x-b| 且 x != now 时可达(now表示当前位置),此时记录下x到序列中,走k步,最后问有多少种 ...
- Windows环境中Openfire与Spark安装与配置指南
安装软件: openfire3.9.3 spark2.6.3 安装环境: WindowsXP JDK1.6.0_21 Oracle 一.openfire安装 1.安装openfire3.9.3,下载地 ...
- man命令中的文本操作
转自:http://www.cnblogs.com/chengmo/archive/2010/10/26/1861809.html 下面说下less命令操作: 光标移动操作: e ^E j ^N ...
- iOS下使用SHA1WithRSA算法加签源码
首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...