1.在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法
class Man {
def name = "山风小子"
def introduce() {
return "I'm $name" // return可以省略
}
}
2.Java中的equals方法对应Groovy中的== , 而Java中的==(判断是否引用同一对象)对应Groovy中的is方法 eg.
3.Java中的数组定义int[] a = {1, 2, 3}; 在Groovy写成int[] a = [1, 2, 3]
4.Java中的for循环for (int i = 0; i < len; i++) {...} 在Groovy中还可以写成for (i in 0..len-1) {...} 或者 for (i in 0..<len) {...}
5.Groovy中的注释比Java多了首行注释#!,其他与Java相同比如单行注释:// 多行注释:/* */ 或者是 支持javadoc的/** */
6.Java5中的for-each:for (Type t : iteratable) {...} 在Groovy中,for (t in iteratable) {...}
7.在Groovy中定义类,定义方法与Java中定义类相同,唯一区别在于Groovy中类,属性以及方法默认都是public的,而在Java中默认是package的
8.Hash常量(类型为java.util.HashMap)在Java没有,在Groovy中表示为 def frequence = ["the": 5, "hello": 2, "world": 2]
9.在varargs方法方面,Groovy比Java多一种表达方式,如下所示:
// 与Java中的写法相同
def varargsMethod(Type... args) {
//do something
}
// Groovy还可以用[]代替...,反应出varargs的本质
def varargsMethod(Type[] args) {
//do something
}
10.方法的默认参数,Groovy中表示如下:
class Hello {
//如果没有参数传入,默认打印出 Hello, 山风小子
def greet(name="山风小子") {
println("Hello, $name") //也可省略括号()
}
}
11.Groovy不仅有? :三元操作符,还有?:两元操作符,但Java只有? :三元操作符。
def a = null;
// 如果a为“空”(null,空串"",[],[:]),那么结果为?:之后的那个值; 如果不为“空”,那么结果就是a
def result = a ?: "default result"
println result
a = "山风小子"
result = a ?: "default result"
println result
12.引用当前对象,Groovy和Java相同,在Java中用this表示,在Groovy中也用this表示,而且在Groovy中,this可以出现在static范围中,指向所在类的类对象,本例中,this等同于ThisInStaticScope.class(Java写法)或ThisInStaticScope(Groovy写法)
class ThisInStaticScope {
static {
println this
}
// 请不要诧异,参数类型可以省略。如果方法声明中有修饰关键字比如public,synchronized,static等,则返回值类型可以省略。
static main(args) {
println this
}
}
13.closure中的delegate ,closure中的delegate类似于类中的this
闭包是一种传递执行代码块的强大方法。可以把闭包看作Java中的匿名内类,但是只有单一的(匿名)方法。闭包用"{}"括起,"->"前面是参数,如果有多个参数用逗号隔开。如果只有一个参数,可以省略前面的参数和"->",而使用缺省的参数"it"。
public class DelegateDemo{
String author = "山风小子"
def someMethod(closure) {//调用时,就像是“块”替换
println "The original delegate of closure is: ${closure.delegate}"
// 无需设置closure.delegate,因为closure的delegate默认值已经是DelegateDemo.this
closure.delegate = this
closure()
}
def greet(words) {
println words
}
public void main(args){
def delegateDemo = new DelegateDemo()
delegateDemo.someMethod {
// 传入someMethod2的closure {} 所处的context的this是DelegateDemo.this
// 所以closure的delegate的默认值也是DelegateDemo.this
// 此处的delegate可以省略
delegate.greet("Hello, " + delegate.author)
}
delegateDemo.someMethod {
// 省略了delegate
greet("Hello, " + author)
}
}
}
分享到:
相关推荐
GROOVY入门经典GROOVY入门经典GROOVY入门经典GROOVY入门经典
Groovy是一种基于Java平台的动态、灵活的编程语言,它设计的目标是简化开发流程,提高开发效率。...通过阅读《Groovy入门经典》这本书,你可以系统地了解Groovy的基础知识和高级特性,逐步掌握这个强大而有趣的语言。
Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...
在这篇关于“Groovy入门”的第四讲中,我们将深入探讨这两个主题。 ### 1. 数据搜索功能 在Groovy中,数据搜索通常涉及到数组、集合或字符串的遍历。Groovy的列表和集合提供了丰富的API来帮助我们高效地查找特定...
Groovy入门经典一书是Groovy编程语言的入门教材,旨在引导Java开发人员和脚本语言新手掌握Groovy语言的基本知识和高级应用。Groovy作为一种动态脚本语言,与Java有相似的语法结构,但在功能和灵活性上远超过Java。...
《Groovy入门经典》奉书内容全面详尽,浅显易懂,易于选择性阅读。可以作为对Groovy语言感兴趣的计算机软件开发人员的参考书。.., Groovy是唯一能够扩展Java平台的脚本语言。Groovy提供类似于Java的语法结构,本地化...
本书“Groovy入门经典”提供中英文双语版本,对于想要学习或深入了解Groovy的开发者来说,是一份非常宝贵的资源。 首先,Groovy的语法简洁,易于理解。与Java相比,Groovy省略了许多不必要的括号和分号,这使得代码...
### 经典Groovy入门资料知识点详解 #### 一、Groovy简介与快速入门 **1.1 使用Groovy** Groovy是一种灵活的面向对象编程语言,它与Java有着良好的兼容性,允许开发者以简洁而强大的方式编写代码。对于那些急于...
在"Groovy入门]第二讲.完成文本界面的程序框架"这个主题中,我们将深入探讨如何使用Groovy构建一个简单的文本界面程序。 首先,让我们了解Groovy的基本语法特点。Groovy允许开发者使用更接近自然语言的语法,比如...
以上内容仅为Groovy入门的基础知识,Groovy还有更多高级特性如AST转换、GroovyShell、 Grape依赖管理等,等待你进一步探索。通过阅读《Groovy经典入门推荐版》PDF,你将能够全面了解这个语言,并迅速上手。
这篇Groovy入门教程由杨宏焱在2009年5月撰写,主要介绍了Groovy的基础知识和开发环境的配置。 首先,Groovy被定义为下一代的Java语言,它与Java兼容并运行在相同的平台上。Groovy的语法与Java相似,但更简洁,避免...
### Groovy 入门指南知识点解析 #### 一、Groovy与Grails简介 - **Groovy**: 是一种运行在Java平台上的灵活的面向对象编程语言。Groovy的设计旨在提高开发者的生产力,它具备简洁的语法,同时兼容现有的Java代码和...
总结,"Grails-开源框架---使用指南.pdf"和"Groovy入门经典(中文).pdf"这两本书将帮助读者深入理解Grails框架和Groovy语言,从而更好地开发基于JVM的现代Web应用程序。通过学习这两本书,开发者可以掌握如何利用...
### Groovy 入门知识点详解 #### 一、Groovy 概述 - **定义**:Groovy 是一种运行在 Java 虚拟机 (JVM) 上的动态编程语言,它结合了 Java 和 Ruby 的优点,使得开发更加高效、灵活。 - **特点**: - 与 Java 无缝...
在本节Groovy入门教程中,我们将探讨如何将玩具信息有效地存储到集合中。Groovy是一种面向对象的、动态的编程语言,它与Java高度兼容,但语法更加简洁和灵活。在Groovy中,集合是存储和管理数据的重要工具,包括数组...
Groovy是一种基于Java虚拟机(JVM)的动态编程语言,它的设计目标是结合静态语言的效率和动态语言的灵活性。Groovy与Java语法相似,但更为简洁,减少了程序员的编码工作量,尤其适合快速开发和脚本编写。 在开发...