Groovy 快速入门程序

2019-04-27 16:44|来源: 网路

为了了解Groovy的基本语法,让我们先看看一个简单的Hello World程序。

创建你的第一个Hello World程序

创建Hello World程序,你只要输入以下几行简单的代码就可实现 -

class Example {
   static void main(String[] args) {
      // Using a simple println statement to print output to the console
      println('Hello World');
   }
}

当我们运行上面的程序,我们会得到以下结果 -

Hello World

在Groovy中导入语句

import语句可以用来导入,可以在你的代码可以使用其他库的功能。这是通过使用在 Import 关键字完成。

下面的示例演示了如何使用MarkupBuilder的类,它可能是最常用的创建HTML或XML标记的类之一。

import groovy.xml.MarkupBuilder 
def xml = new MarkupBuilder()

默认情况下,Groovy在代码中包括以下库,因此您不需要显式导入它们。

import java.lang.* 
import java.util.* 
import java.io.* 
import java.net.* 

import groovy.lang.* 
import groovy.util.* 

import java.math.BigInteger 
import java.math.BigDecimal

Groovy令牌

令牌可以是一个关键字,一个标识符,常量,字符串文字或符号。

println(“Hello World”);

在上面的代码行中,有两个令牌,首先是关键词的println而接下来就是字符串的“Hello World”。

Groovy评论

在您的代码中使用注释。Groovy的注释可以是单行或多行。

单行注释使用//在该行的任何位置来识别。一个例子如下所示 -

class Example {
   static void main(String[] args) {
      // Using a simple println statement to print output to the console
      println('Hello World');
   }
}

多行注释标识与在开始/ *和* /识别多行注释的末尾。

class Example {
   static void main(String[] args) {
      /* This program is the first program
      This program shows how to display hello world */
      println('Hello World');
   }
}

分号

就像Java编程语言,它需要具有分号在Groovy定义多个语句之间进行区分。

class Example {
   static void main(String[] args) {
      // One can see the use of a semi-colon after each statement
      def x = 5;
      println('Hello World');  
   }
}

上述例子示出了分号使用了不同行的代码语句之间进行区分。

身份标识

标识符被用来定义变量,函数或其他用户定义的变量。标识符以字母开头,美元或下划线。他们不能以数字开头。以下是有效标识符的一些例子 

def employeename 
def student1 
def student_name

其中,DEF是在Groovy用来定义标识符的关键字。

下面是一个如何在我们的Hello World程序中使用标识符的代码示例。

class Example {
   static void main(String[] args) {
      // One can see the use of a semi-colon after each statement
      def x = 5;
      println('Hello World'); 
   }
}

在上述的例子中,变量x被用作标识符。

关键词


关键字作为名称建议是在Groovy编程语言中保留的特殊字。 下表列出了在Groovy中定义的关键字。


as assert break case
catch class const continue
def default do else
enum extends false Finally
for goto if implements
import in instanceof interface
new pull package return
super switch this throw
throws trait true try
while      


空白

空白是在编程语言如Java和Groovy用来形容空格,制表符,换行符和注释术语。空格分隔从另一个声明的一部分,使编译器,其中一个元素标识的声明。

例如,在下面的代码示例,存在关键字def和变量x之间的空白。这是为了让编译器知道DEF是需要被使用,并且是x应该是需要被定义的变量名的关键字。

def x = 5;


文字

文字是在groovy中表示固定值的符号。Groovy语言有符号整数,浮点数,字符和字符串。下面是一些在Groovy编程语言文字的例子 -

12 
1.45 
‘a’ 
“aa”

相关问答

更多
  • ShortTypeHandling是在groovy-all-2.3.0.jar中引入的,所以快速修复是用groovy-all-2.3.0.jar替换旧的groovy-all-xxxjar。 这解决了运行时ShorTypeHandling ClassNotFoundException,但是通过在应用程序中引入新的groovy-all.jar依赖关系也创建了新的问题。 真正的问题是如何通过maven调用groovy编译器。 因为我介绍了需要groovy 2.0的spock,我需要更新groovy-eclipse ...
  • 它看起来不像是要导入RSyntaxTextArea的包。 您是否尝试将以下导入添加到您的程序中? import org.fife.ui.rtextarea.*; import org.fife.ui.rsyntaxtextarea.*; It doesn't look like you're importing the package for RSyntaxTextArea. Have you tried adding the following imports to your program? impo ...
  • 我错过了一些理由,为什么它不那么受欢迎,并且会把我的热情压制在一些东西上? 我的回答是强调“不”。 Groovy确实是一个非常有效的语言。 我花了大约一年时间将它用于我的日常工作,并且非常喜欢与它一起工作。 IMO,Groovy的默默无闻与语言本身无关,但其他因素如: 缺乏企业支持(即营销$$$) 2007年相对较新的版本1.0发布 随着各种“新”语言(Scala,F#,Clojure,Groovy)争夺思想共享,编程语言市场变得越来越拥挤。 这使得这些语言中的任何一种都难以占据这个市场的重要份额。 Am ...
  • 您对混合Java和Groovy项目的态度如何? 对于Grails来说似乎工作得很好。 你认为只在Groovy中编写整个应用程序才有意义吗? 定义“有道理”。 我认为它可能适用于Web应用程序,但不是所有的应用程序。 我会决定一个个案的低音。 最安全的答案是说“它应该是Java和Groovy的混合体”。 由于Groovy在JDK 6中运行,我假设它的可移植性不如JDK 6。 网络应用程序的性能通常取决于诸如网络延迟或数据库设计(如适当的索引)等因素,而不是原始语言速度。 What is your attitu ...
  • 闭包继承没有多大意义(无论如何我们倾向于使用它们)。 实践中的Closure是Closure类的一个实例。 如果我们创建了Closure子类,那么我们可以将它们子类化,但我们不能。 例如,在控制器中,我们将操作定义为内联实例,例如 def list = { ... } 这些被视为方法,因为我们可以调用list() ,但这只是list.call()语法糖,因为call()是Closure类的实例方法。 在Grails 2.0中,创建控制器操作的首选方法是使用方法,尽管仍然支持闭包以实现向后兼容性。 这种切换 ...
  • 我想你必须找到Gant.groovy的来源,看看它在那条线上做了什么。 显然,您的项目的特定配置会导致一些问题(因为如果总是发生这样的show-stopper bug就会被捕获),但错误消息不包含太多信息。 或者,如果您还没有,可以尝试将Grails升级到最新版本1.1.1。 I think you'll have to find the source of Gant.groovy and see what it's doing on that line. Apparently there is some ...
  • 对于简单的情况,您可以使用-l标志以“监听”模式运行Groovy脚本,如下所示: groovy -l 9010 SimpleServer.groovy 这将启动SimpleServer脚本侦听端口9010.我从mrhaki的Groovy Goodness博客中获取此示例: http ://mrhaki.blogspot.com/2009/12/groovy-goodness-serversocket-scripts.html。 查看完整的示例。 For simple cases you can run y ...
  • 在这个问题中有一个很好的网站列表 - http://www.quora.com/Who-has-deployed-a-medium-large-website-succesfully-on-Groovy-Grails There is a good list of sites in this quora question - http://www.quora.com/Who-has-deployed-a-medium-large-website-succesfully-on-Groovy-Grails
  • 有问题的代码是: s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2 因此,左边的语句定义了一个字符串,然后右边的语句将字符串的不同位加在一起: 如果我们添加以下内容以打印出它正在做的事情: println s[0..1] println s[3] println s[0..1] println s[2] * 6 println s[3..-1] * 2 我们得到输出: s= ' ...
  • 我发现这很容易做到,因为对象的.properties属性生成了一个映射,列出了属性名称作为键,值作为值。 一旦我有了,那么我可以在两张地图之间做出改变,我得到了我正在寻找的答案。 每个对象都有一个.properties扩展名。 这就像Python .dict一样。 例 object1.properties - object2.properties 因此,这些将显示object1属性和object2属性之间的区别,但仅限于存在与object2内不同的实体(键+值)的情况。 如果object2中有额外的属性, ...