首页编程groovy(Groovy基本语法)

groovy(Groovy基本语法)

编程之家2023-11-03114次浏览

亲爱的读者们,你是否对groovy和Groovy基本语法的关系感到好奇?在本文中,我将深入探讨它们之间的联系,让你对此有更深刻的理解。

groovy(Groovy基本语法)

groovy 定义数组方法

一、数组的定义及赋初值

在Groovy语言中,数组的定义和Java语言中一样。

def a= new String[4]

def nums= newint[10]

groovy(Groovy基本语法)

def objs= new Object[3]

然后赋值也一样:

a[0]='a'

a[1]='b'

a[2]='c'

groovy(Groovy基本语法)

a[3]='d'

所不同的在于在数组定义的时候赋初值。

在Java语言里,对一个字符串数组这样定义:

String[] strs= new String[]{'a','b','c','d'};

而在Groovy语言中,对一个字符串数组则需要这样定义:

def strs= ['a','b','c','d'] as String[]

二、数组的遍历

在Groovy语言中,对数组的遍历方法很多,常用的是使用each方法:

a.each{

println it

}

当然,你也可以使用增强for循环:

for(it in a)

{

println it

}

你还可以使用如下的遍历方式:

(0..<a.length).each{

println a[it]

}

三、数组和List之间的转化

List对象转化成数组对象非常简单:

List list= ['a','b','c','d']

def strs= list as String[]

println strs[0]

绝对没有Java语言那么复杂:

List list= new ArrayList();

list.add("1");

String[] strs=(String[])list.toArray(new String[0]);

System.out.println(strs[0]);

而从数组转化成List对象也非常简单:

def strs= ['a','b','c','d'] as String[]

List list= strs.toList()

println list.get(0)

你也可以这样转化:

def strs= ['a','b','c','d'] as String[]

List list= strs as List

println list.get(0)

而在Java语言中,你需要这样转化:

List list= Arrays.asList(strs)

什么是 Groovy

●是一个基于 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代码中,如果想要创建一个项列表,首先要导入java.util.ArrayList,然后程序化地初始化 ArrayList实例,然后再向实例中添加项。在 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一样,支持单行(使用//)、多行(/**/)和文档注释(使用/***/)。

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,需要用括号括住:

文章分享结束,groovy和Groovy基本语法的答案你都知道了吗?欢迎再次光临本站哦!

日本代理ip 日本代理IPmsforms.exd msforms.exd 是什么