1. Groovy的安装

目前Groovy的最新版本为2.1.2版,下载地址为:http://groovy.codehaus.org/Download
下载后解压groovy-binary-2.1.2.zip到某个目录,然后设置GROOVY_HOME环境变量指向Groovy的解压目录。
再设置PATH环境变量,添加%GROOVY_HOME%\bin。
要验证以上安装是否正确,在命令行方式,执行:

>groovy -v
Groovy Version: 2.1.2 JVM: 1.7.0_09 Vendor: Oracle Corporation OS: Windows 7

表示Groovy安装成功。

2. Groovy的第一个例子

我们先写一个Java类Todo.java,内容如下:

import java.util.List;
import java.util.ArrayList; public class Todo{
private String name;
private String note; public Todo(){} public Todo(String name, String note){
this.name = name;
this.note = note;
} public String getName(){
return name;
} public void setName(String name){
this.name = name;
} public String getNote(){
return note;
} public void setNote(String note){
this.note = note;
} public static void main(String[] args){
List<Todo> todos = new ArrayList<Todo>();
todos.add(new Todo("1", "one"));
todos.add(new Todo("2", "two"));
todos.add(new Todo("3", "three"));
for(Todo todo : todos){
System.out.println(todo.getName() + " " + todo.getNote());
}
}
}

我们用javac编译它,用java运行它,一切正常。现在,我们把Todo.java改名为Todo.groovy,然后执行:

groovy Todo.groovy

我们会惊异地发现,与Java的执行结果一样。

结论:Groovy是兼容Java的。
运行Java持续有两步:用javac编译类文件,然后用java在JVM上执行编译后的字节码文件。
而Groovy是在运行时编译字节码文件,在开发中节省了编译这个步骤。

3. 用Groovy简化Java代码

下面,我们用Groovy简化JavaBean为GroovyBean。

import java.util.List;
import java.util.ArrayList; public class Todo{
String name;
String note; public static void main(String[] args){
List<Todo> todos = new ArrayList<Todo>();
todos.add(new Todo(name:"1", note:"one"));
todos.add(new Todo(name:"2", note:"two"));
todos.add(new Todo(name:"3", note:"three"));
for(Todo todo : todos){
System.out.println(todo.name + " " + todo.note);
}
}
}

执行结果仍然一样。
可见,
1)省略了JavaBean的getter和setter方法;
2)默认情况,所有的类属性都是public的;
3)构造函数很有特色,Map方式。

4. 用Groovy再进一步简化代码

执行结果仍然一样。
可见,
1)List和ArrayList省略了类型;
2)省略了分号;
3)打印语句省略了System.out。

5. 用Groovy再进一步省略main()函数

public class Todo{
String name
String note
}
def todos = [
new Todo(name:"1", note:"one"),
new Todo(name:"2", note:"two"),
new Todo(name:"3", note:"three")
]
todos.each{
println "${it.name} ${it.note}"
}
此代码在groovyconsole控制台运行正常。

看了以上内容,你们对Groovy有什么看法?下一节我们将介绍Groovy语言的关键特征。

http://blog.csdn.net/chszs/article/details/8757961

Groovy学习:第一章 用Groovy简化Java代码的更多相关文章

  1. JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇

    JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...

  2. web学习第一章

    web学习第一章   我是大概9月10日开始走上IT之路的,一开始学习了小段时间的自动化办公软件, 昨天我开始学习客户端网页编程,我了解什么是WEB,一些比较老古董的计算模式和发展历史,印象最让我深刻 ...

  3. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

  4. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  5. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  6. Lombok简化Java代码

    导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...

  7. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  8. 【转载】Gradle学习 第九章:Groovy快速入门

    转载地址:http://ask.android-studio.org/?/article/17 To build a Groovy project, you use the Groovy plugin ...

  9. Intel汇编语言程序设计学习-第一章 基本概念

    第一章基本概念 1.1  简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用I ...

随机推荐

  1. Dart基础使用手册

    程序入口 在每个app中必须有一个main()函数作为程序的入口点. 你可以在新建的flutter项目中找到它(main.dart) void main() => runApp(MyApp()) ...

  2. maven多模块

    https://www.cnblogs.com/lichking2017/p/8996939.html

  3. token和session的区别及其发展史

    其实token与session的问题是一种时间与空间的博弈问题, session是空间换时间,而token是时间换空间. 一.发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为 ...

  4. 【串线篇】Mybatis之动态sql

    一.if标签 <select id="getTeacherByCondition" resultMap="teacherMap"> select * ...

  5. Java中避免空指针常见的方法

    什么是空指针? 当一个变量的值为null时,在Java里表示一个不存在的空对象,没有实际内容,没有给它分配内存,null也是对象成员的默认值.所以,一个对象如果没有进行初始化操作,这时如果调用这个对象 ...

  6. Docker常规操作

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11601853.html Docker 常⽤命令 镜像相关 • docker pull <imag ...

  7. hdu 5810:Balls and Boxes(期望)

    题目链接 这题似乎就是纯概率论.. E(V)=D(X_i)=npq (p=1/m,p+q=1) #include<bits/stdc++.h> using namespace std; t ...

  8. MySQL提示:too many connections

    1.首先查询最大连接数 show variables like '%max_connections%'; 2.检查当前的连接情况: show processlist; 3.批量kill当前的连接: 通 ...

  9. 接触python的第2天:了解变量和打印

    1变量不用定义类型, 可以直接赋值 >>> a =5 >>> a 5 >>> a='hello' >>> a 'hello' 2 ...

  10. 【Vue】新版vue解决跨域问题

    vue.config.js module.exports = { devServer: { proxy: { "/api": { target: "http://192. ...