1. groovy是什么
groovy是运行在java虚拟机上的具有象Python,Ruby和Smalltalk语言特性的灵活动态语言。实际上它并非脚本语言,因为在运行时它也被编译成了字节码,运行在JVM上,它和java可以无缝的结合使用,你可以认为他是java语言的另一种表现形式,但它更灵活,简洁。
groovy不是行执行的,它是编译成整个class文件执行的,可以这样认为,groovy本质上是新加了一个类加载器,它在运行时编译groovy代码为字节码,使之产生动态的行为。
2004年,groovy通过了JSR-241,groovy成为了java 平台的第二个标准语言(第一个是java 语言)
2. 编译和运行groovy
学习groovy可以用命令行的groovy或者GroovyConsole一个swing写的窗口程序。
写的groovy脚本可以直接用groovy解析执行:
写道
> groovy sum.groovy
编译groovy为字节码:
写道
> groovyc -d classes sum.groovy
运行编译好的groovy脚本:
写道
java -cp %GROOVY_HOM E%/embeddable/groovy-all.jar;classes sum
你会发现其实就是运行java的class文件
3. groovy语言
由于groovy和java及其相似,这里只介绍groovy特别的语法。
3.1 groovy调用方法可以不用括号,语句不用分号(;)结尾(当然也可以加分号)
f = Math.floor 3.14
println "f is: ${f}" // ${f} will be replaced with f's value
你会发现这里我们也没import java.util.Math,System.out,因为groovy已经import了以下的包和类:
groovy.lang.*
groovy.util.*
java.lang.*
java.util.*
java.net.*
java.io.*
java.math.BigInteger
java.math.BigDecimal
3.2 Class
groovy默认的访问修饰符是public
class SumCal {
private int to;
SumCal(int to) {
this.to = to;
}
int getSum() {
int s = 0;
1..to.each { i->
s += i;
}
return s;
}
}
sc = new SumCal(10);
println sc.getSum();
3.3 groovy beans
groovy的bean只需要声明属性,groovy会自动生成get/set方法,
class User {
int id;
String name;
String getName() {
return name.capitalize();
}
}
def user = new User();
user.id = 10231; // call user.setId()
user.name = 'jamson'; // call user.setName()
println user.name; // call user.getName()
输出:
写道
Jamson
可见,并非对属性的直接访问,而是调用了get/set方法,是不是比java beans方便很多呢?
3.4 一切皆对象
学习Java的时候你可能听到这句话,但java里的原始类型,如int,boolean等不是对象。在groovy里,所有的皆是对象,不论是原始类型还是常量,甚至是一段代码,都会编译成一个对象。
'alpha'.center 10,'-'
10.plus(2)
groovy里你既可以静态的指定类型,也可以不指定,即动态类型。但指定了静态类型,就不能赋值为不同的类型。
a=1
a='cc'
int c = 3
c='ccs' //compile failure
3.5 操作符重载
还记得C++里面的操作符重载吗?groovy也引进了这个特性。
class Complex {
private final int v;
private final int i;
Complex(int v, int i) {
this.v = v;
this.i = i;
}
boolean equals(Object o) {
if (null == o) return false;
if (!o instanceof Complex) return false;
return (v == o.v && i == o.i);
}
int hashCode() {
return v.hashCode() + i.hashCode();
}
Complex plus(Complex o) {
if (null == o) throw new IllegalArgumentException();
return new Complex(v + o.v, i + o.i);
}
String toString() {
return "${v} + ${i}i";
}
}
def c = new Complex(1, 0);
def d = new Complex(1, 0);
println c == d; // call equals
println c + d; // call plus
3.6 GString
groovy.lang.GString是对java String的扩展:常量表示更加方便,提供了更多的方法。
'hello world'
"hello $name"
'''-------
python style string
-------'''
"""
triple double quote
with $Gstring aware
"""
/back slash safe \t, \widows\path/
char c='a'; // declare character explicitly
date = "Current London time is ${new Date().toGMTString()}"
province = 'Sichuan'
city = 'Chengdu'
addr = "I am in city: $city province: $province, you?"
println "${addr.strings[0]}, ${addr.strings[1]}, ${addr.values[0]}, ${addr.values[1]}"
// output: I am in city: , province: , Chengdu, Sichuan
println addr[2..3] // output: am
sb = 'i am a string'
sb <<= ' changed to a stringbuffer'
sb << ' now can append' // sb is: i am a string changed to a stringbuffer now can append
分享到:
相关推荐
Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...
Groovy是一种基于Java虚拟机(JVM)的动态编程语言,它的设计目标是结合静态语言的效率和动态语言的灵活性。Groovy与Java语法相似,但更为简洁,减少了程序员的编码工作量,尤其适合快速开发和脚本编写。 在开发...
"OFBiz开发者装备系列:0005"可能是一个关于OFBiz开发的学习资料系列,其中的"Groovy中文教程.pdf"可能是该系列的一部分,提供了详细的Groovy语言学习内容,适合对OFBiz开发感兴趣的Java开发者阅读。而"OFBiz其它资源...
Groovy基础教程源码涵盖了Groovy语言的各个方面,是学习和理解Groovy语言的宝贵资源。下面将详细阐述Groovy的一些核心知识点。 1. **动态类型与静态类型**: Groovy支持动态类型,这意味着变量在声明时无需指定...
通过本文的介绍,我们了解到Groovy脚本作为一种强大的脚本语言,在Java平台上的应用十分广泛。无论是进行简单的脚本编写还是复杂的项目开发,Groovy都能提供强大的支持。掌握Groovy的基础知识和进阶技巧,对于提升...
本节将介绍Groovy中的几个核心概念,包括本地集合、内置正则表达式和闭包等。 **本地集合**: - Groovy中的列表(List)和映射(Map)操作非常直观,支持链式调用等特性。 - 例如,可以轻松地对列表进行排序、过滤和...
这篇Groovy入门教程由杨宏焱在2009年5月撰写,主要介绍了Groovy的基础知识和开发环境的配置。 首先,Groovy被定义为下一代的Java语言,它与Java兼容并运行在相同的平台上。Groovy的语法与Java相似,但更简洁,避免...
"Groovy in Action"是一本全面介绍Groovy的权威书籍,中文版的推出使得更多的中国开发者能够便捷地学习和理解这一语言。这本书深入浅出地讲解了Groovy的各个方面,包括基础语法、面向对象特性、元编程、领域特定语言...
### Groovy中文教程知识点概述 #### 一、Groovy简介与快速入门 ##### 1.1 使用Groovy - **Groovy** 是一种基于 **Java虚拟机 (JVM)** 的编程语言,它提供了简洁的语法,并且兼容Java的类库。Groovy能够直接运行在...
Groovy是一种基于Java虚拟机(JVM)的编程语言,设计目标是简化Java的语法,使其更加简洁和灵活。作为下一代的Java语言,Groovy在保留与Java兼容性的同时,摒弃了一些Java中的繁琐语法,使得程序员能更高效地编写...
### Groovy 1.7 官方教程知识点详解 #### 一、Groovy简介 - **定义**:Groovy是一种灵活且动态的语言,专为Java虚拟机(JVM)设计。 - **特点**: - **继承优势**:在保留Java强项的基础上,引入了更多来自Python...
Groovy 是一种基于Java平台的面向对象语言。Groovy 的语法和 Java 非常的相似,可以使用现有的 Java 库来进行 Groovy 开发。可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。
书中详细介绍了如何使用Groovy的强大功能来创建特定于某个领域的语言,包括但不限于: - 如何利用Groovy的元编程特性来定制语法结构。 - 如何通过闭包和其他高级特性来增强DSL的功能。 - 如何在实际项目中应用DSL以...
, 本书是有关Groovy的第一本正式出版物,作者Kenneth Barclay和John Savage介绍了Groovy开发的所有主要领域,并解释了这种创新性的编程语言给Java平台赋予的动态特性。阅读本书只要求具备Java编程的一般性知识。不管...
本讲主要介绍Groovy的基础知识,包括如何进行项目演示以及如何搭建Groovy的开发环境。 首先,让我们来理解Groovy的核心特性。Groovy是动态类型的,这意味着在编写代码时,我们无需指定变量的类型。它支持面向对象...
例如,我们可能会有一个MongoDB集合,其中每个文档包含一个字段存储Groovy脚本。Java代码会连接到MongoDB,找到这个文档,读取Groovy脚本,然后使用GroovyClassLoader进行加载和执行。 动态加载数据库中的Groovy...