Groovy基本语法

Groovy基本语法,第1张

官方文档

和Java一样,支持单行(使用 // )、多行( /* */ )和文档注释(使用 /** */ )。

UNIX系统支持一种特殊的单行注释叫作 Shebang line ,用于指明脚本的运行环境,这样就可以直接在终端中使用 ./xxx.groovy 运行(当然,前提是文件得有可运行的权限),而不用像 groovy xxx.groovy 这样运行:

# 号必须是文件的第一个字符。

以字母、美元符号 $ 或下划线 _ 开始,不能以数字开始。以下是可用的标识符:

以下是不可用的标识符:

注意:在点号后,是可以使用关键字作为标识符的:

Groovy在点表达式(dotted expression)后面可以使用引号标识符,比如 persion.name 可以表示为 persion.'name' 或 persion."name" 。而引号中可以包含普通标识符中不支持的字符,比如空格、中档线 - 这些:

其实,Groovy支持多种字符串的字面量表达形式,这些都是可以出现在点号后面的:

更方便的是,Groovy中的 GString 支持 插值 ,也可以用在点号后面的:

在Groovy中字符串有两种类型,一种是Java原生的 java.lang.String ;另一种是 groovy.lang.GString ,又叫 插值字符串 (interpolated strings)。

在Groovy中,使用单引号括住的字符串就是 java.lang.String ,不支持插值:

使用三单引号括住字符串支持多行,也是 java.lang.String 实例,在第一个 ’‘’ 起始处加一个反斜杠 \ 可以在新一行开始文本:

如果双引号括住的字符串中没有插值表达式(interpolated expression),那它就是 java.lang.String ;如是有插值表达式,那它就是 groovy.lang.GString :

在Groovy所有的字符串字面量表示中,除了单引号字符串和三单引号字符串,其他形式都支持字符串插值。字符串插值,也即将占位表达式中的结果最终替换到字符串相应的位置中:

当使用点号表达式时,可以只用 $ 代替 ${} :

插值占位符中还支持闭包,而闭包的一个好处是 惰性求值 (lazy evaluation):

当一个方法的需要一个 java.lang.String 变量,而我们传递的是一个 groovy.lang.GString 实例时, GString 的 toString 方法会被自动调用,看起来像我们可以直接将一个 GString 赋值给一个 String 变量一样。

注意: GString 与 String 的hashCode是不一样的,即使他们最终结果一样。所以,在Map中,不应该用 GString 去做元素的Key,而又使用普通的 String 去取值:

类似于三单引号字符串,但支持字符串插值。

除了使用引号来括住字符串,还可以使用 / 。它一般用来定义正则表达式:

这种字符串使用 $/ 开始,使用 /$ 结束,其中的转义字符为 $ :

在Groovy中并没有明确的字符字面量表示形式,我们必须明确指明:

当使用 def 指明整数字面量时,变量的类型会根据数字的大小自动调整:

为了精确地计算小数,在Groovy中使用 def 声明的小数是 BigDecimal 类型的:

如果要强制指明一个数字的字面量类型,可以给字面量加上类型后缀:

默认情况下Groovy的列表使用的是 java.util.ArrayList ,用中括号 [] 括住,使用逗号分隔:

如果要使用其它类型的列表(如: LinkedList )可以使用 as *** 作符或显式分配给一个指定类型的变量:

Groovy重载了列表的 [] 和 << *** 作符,可以通过 List[index] 访问指定位置元素,也可以通过 List <<element 往列表末尾添加元素:

在Groovy中,没有数组的字面量定义方式。和特定类型列表的定义方式一样,我们需要使用 as *** 作符或显式地分配给一个数组类型的变量:

Groovy使用中括号 [] 来定义映射,元素需要包含key和value使用冒号分隔,元素与元素之间用逗号分隔:

在上边的例子中,虽然没有明确的使用字符串 ’red‘ 、 ’green‘ ,但Groovy会自动把那些key转化为字符串。并且,在默认情况下,初始化映射时,key也不会去使用已经存在的变量:

如果要使用一个变量作为key,需要用括号括住:

● 是一个基于 Java虚拟机的敏捷 动态语言。● 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征。●为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。● 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让你的代码变得易于阅读和维护。● Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变的非常简单。● 在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。● 支持单元测试和模拟(对象),可以 简化测试。● 无缝集成 所有已经存在的 Java对象和类库。● 直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。)Groovy 快捷方式 开始使用 Groovy 时,您会发现它使日常的编程活动变得快了许多。完成本教程之后,您会了解更多的 Groovy 语法快捷方式。不过现在只需知道以下这些要点:Groovy 的松散的 Java 语法允许省略分号和修改符。除非另行指定,Groovy 的所有内容都为 public。Groovy 允许定义简单脚本,同时无需定义正规的class 对象。Groovy 在普通的常用 Java 对象上增加了一些独特的方法和快捷方式,使得它们更容易使用。Groovy 语法还允许省略变量类型。Groovy 的新增特性 虽然Groovy 允许省略 Java 语法中的一些元素,但也增加了一些新特性,例如本地集合、内置的正则表达式和闭包。在标准的 Java 代码中,如果想要创建一个项列表,首先要导入<code>java.util.ArrayList</code>,然后程序化地初始化 <code>ArrayList</code>实例,然后 再向实例中添加项。在 Groovy 中,列表和映射都内置在语法中 — 无需导入任何内容。正则表达式也不需要额外的导入或对象;它们可以通过特殊的 Groovy 语法来创建。关于闭包 对于任何 Java 开发人员来说,闭包都是一个令人兴奋的新技巧。这些神奇的构造将会包含在未来的 Java 发行版(很可能是 Java 7)中,成为正式的 Java 语法,但现在已经可以在 Groovy 中使用了。可以将闭包 想像为一个代码块,可以现在定义,以后再执行。可以使用这些强大的构造做许多漂亮的事,不过最著名的是简化迭代。使用 Groovy 之后,就有可能再也不需要编写Iterator 实例了。动态的 Groovy 从技术上讲,Groovy 可能是您最近听说过的类型最松散的动态语言之一。从这个角度讲,Groovy 与 Java 语言的区别很大,Java 语言是一种固定类型语言。在 Groovy 中,类型是可选的,所以您不必输入String myStr = "Hello"来声明 String 变量,可以使用def myStr = "Hello"(分号可有可无)。除此之外,Groovy 代码还能在运行时轻松地改变自己。这实际上意味着,能够在运行时轻松地为对象指定新方法和属性。这一编程领域称为元编程,Groovy 能够很好地支持这种编程方式。在学习本教程的过程中,您将了解到关于 Groovy 的动态性质的更多内容。现在惟一要补充的是,您会惊讶地发现,在 Groovy 会使 *** 作 XML 或普通的 java.io.File 实例变得非常轻松。一体两面 用Groovy 编写的任何内容都可以编译成标准的 Java 类文件并在 Java 代码中重用。类似地,用标准 Java 代码编写的内容也可以在 Groovy 中重用。所以,可以轻易地使用 Groovy 为 Java 代码编写单元测试。而且,如果用 Groovy 编写一个方便的小工具,那么也可以在 Java 程序中使用这个小工具。Groovy是用Java实现的开源脚本语言并且和它联系紧密.它需要JDK 1.4. Groovy向Java添加了许多Ruby和Python脚本语言的特性. Groovy的特性包括动态类型(dynamic typing), 闭包(closures),简单对象导航( easy object navigation)和更加简洁的Lists和Maps语法.Groovy是由James Strachan和Bob McWhirter创造的. James还参与了许多其他开源项目的开发,其中包括Jelly, dom4j, Jaxen, Betwixt和Maven. Bob是Jaxen和Drools (一个开源的面向对象的JAVA规则引擎) 的创始人.目前最新稳定版为Groovy1.8。

Groovy重用了列表的方括号作为数组的符号,但是为了制作这样的文字数组,你需要通过强制或类型声明来明确地定义数组的类型。

创建多维数组:

对数组元素的访问遵循与列表相同的表示法:

Java数组花括号的初始化方式在 Groovy 中是不支持的 ,因为花括号可能与Groovy闭包的符号含义有冲突。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11667019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存