手机版

百科游戏 手游攻略

groovy(什么是 Groovy)

百科 2026-09-10 18:52:09 手游攻略 阅读:336次

Groovy基本语法

官方文档

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

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

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

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

以下是不可用的标识符:

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

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

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

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

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

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

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

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

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

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

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

当一个方法的需要一个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<

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

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

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

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

groovy语言主要是用来干什么,和JAVA的区别是什么

Groovy是Java平台上设计的面向对象编程语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用。groovy的语法跟java完全按类似。

它和java的区别是:

一:java为强类型的语言;Groovy为弱类型,可以自动推断类型;

创建数组的时候Groovy的语法为:defintArray=[2,3,4]

创建MAP的时候Groovy的语法为:defm={}

二:Groovy默认访问修饰符为Public,可以不写访问修饰符

可以直接用def关键字定义,如:

defsayHello(){}

限定访问范围

@PackageScope修饰方法

什么是 Groovy

●是一个基于Java虚拟机的敏捷动态语言。●构建在强大的Java语言之上并添加了从Python,Ruby和Smalltalk等语言中学到的诸多特征。●为Java开发者提供了现代最流行的编程语言特性,而且学习成本很低(几乎为零)。●支持DSL(DomainSpecificLanguages领域定义语言)和其它简洁的语法,让你的代码变得易于阅读和维护。●Groovy拥有处理原生类型,面向对象以及一个AntDSL,使得创建ShellScripts变的非常简单。●在开发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代码中,如果想要创建一个项列表,首先要导入java.util.ArrayList,然后程序化地初始化ArrayList实例,然后再向实例中添加项。在Groovy中,列表和映射都内置在语法中—无需导入任何内容。正则表达式也不需要额外的导入或对象;它们可以通过特殊的Groovy语法来创建。关于闭包对于任何Java开发人员来说,闭包都是一个令人兴奋的新技巧。这些神奇的构造将会包含在未来的Java发行版(很可能是Java7)中,成为正式的Java语法,但现在已经可以在Groovy中使用了。可以将闭包想像为一个代码块,可以现在定义,以后再执行。可以使用这些强大的构造做许多漂亮的事,不过最著名的是简化迭代。使用Groovy之后,就有可能再也不需要编写Iterator实例了。动态的Groovy从技术上讲,Groovy可能是您最近听说过的类型最松散的动态语言之一。从这个角度讲,Groovy与Java语言的区别很大,Java语言是一种固定类型语言。在Groovy中,类型是可选的,所以您不必输入StringmyStr="Hello";来声明String变量,可以使用defmyStr="Hello";(分号可有可无)。除此之外,Groovy代码还能在运行时轻松地改变自己。这实际上意味着,能够在运行时轻松地为对象指定新方法和属性。这一编程领域称为元编程,Groovy能够很好地支持这种编程方式。在学习本教程的过程中,您将了解到关于Groovy的动态性质的更多内容。现在惟一要补充的是,您会惊讶地发现,在Groovy会使操作XML或普通的java.io.File实例变得非常轻松。一体两面用Groovy编写的任何内容都可以编译成标准的Java类文件并在Java代码中重用。类似地,用标准Java代码编写的内容也可以在Groovy中重用。所以,可以轻易地使用Groovy为Java代码编写单元测试。而且,如果用Groovy编写一个方便的小工具,那么也可以在Java程序中使用这个小工具。Groovy是用Java实现的开源脚本语言并且和它联系紧密.它需要JDK1.4.Groovy向Java添加了许多Ruby和Python脚本语言的特性.Groovy的特性包括动态类型(dynamictyping),闭包(closures),简单对象导航(easyobjectnavigation)和更加简洁的Lists和Maps语法.Groovy是由JamesStrachan和BobMcWhirter创造的.James还参与了许多其他开源项目的开发,其中包括Jelly,dom4j,Jaxen,Betwixt和Maven.Bob是Jaxen和Drools(一个开源的面向对象的JAVA规则引擎)的创始人.目前最新稳定版为Groovy1.8。

本文链接:https://bk.89qw.com/a-982271/

最近发表
网站分类