(1)Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
我们sys_rule中使用的Groovy就是脚本语言。由Common提供的执行器执行。

二、注释

  “#!”注释只允许在脚本文件的第一行出现,通过这种方式Unix shell能定位groovy的启动脚本并且运行这些脚本。

  “//”单行注释,注释文字必须在这一行结束。
  多行注释使用“/*……*/”包围起来。
  Javadoc风格的注释“/**……*/”和多行注释是相似的,但是这种注释支持groovydoc用来生成文档,groovydoc与javadoc使用的语法是等价的。

#!注释只允许在脚本文件的第一行出现

(3)

//单行注释

/*

多行注释

*/

/**

文档注释

**/

println("Hello World")

三、语法自动导包

Groovy自动导入以下包和类:
groovy.lang.*
groovy.util.*
java.lang.*
java.util.*
java.net.*
java.io.*
java.math.BigInteger
java.math.BigDecimal

(5)

//java.math
BigDecimal num = new BigDecimal("123456")
println(num)

//java.util
ArrayList<String> list = new ArrayList<String>()
list.add("123")
list.add("456")
list.add("789")
println(list)

四、语法简化内容

1.不需要public修饰符 因为类和方法修饰符默认为public 属性则默认为private
class Book
{
String title
Book (String theTitle)
{
title = theTitle
}

String getTitle()
{
return title
}
}

Book book = new Book("Groovy in Action")
println book.getTitle()

(7)

2.不需要getter/setter,可以直接使用类实例的属性

class Book
{
String title
Book (String theTitle)
{
title = theTitle
}
}

Book book = new Book()
println book.title
book.setTitle("Groovy")
println book.getTitle()

(8)

3.不需要分号。不需要括号

String str = "123";
println str;
println (str)

(9)

4.不需要类型说明,不关心属性的具体类型,可以直接使用def声明,当然也可以和java一样使用int、String等声明一个属性类型

def num1 = 123
def num2 = '123'
def num3 = 12.3
def num4 = 123000000000000000000
def num5 = 123000000000

println num1.class
println num2.class
println num3.class
println num4.class
println num5.class

(10)

5.不需要return,我们定义有返回值的方法时,return语句不是必须的,当没有return的时候,Groovy会把方法执行过程中的最后一句代码作为其返回值

def num1 = method 1,2
def num2 = method "Test1","Test2"

println "num1 " + num1
println "num2 " + num2

def method(def a, def b)
{
if (a > b)
{
a
}
else
{
b
}
}

五、强制类型的转换

类型转换,可以使用as关键字强制类型转换,也可以使用Java的强制类型转换(不推荐)

def num = "123"
println num.class

def num1 = num as Integer
println num1.class

long a = 123
int b = (long)a

println a.class
println b.class

六、字符串

单引号和双引号可以表示字符串。
异同:
两者都可以定义一个字符串常量。
单引号是纯粹的字符串常量,双引号里的字符串里的表达式可以做运算。

def name = 'liuhuimin'
def str = "My name is ${name}"

println str

PS:三引号可以表示多行字符串

def str = '''line 1
line2
line3
'''

println str

七、集合

List
定义一个List,可以直接使用def list = [1,2,3],访问List可以不使用get,而是使用数组下标的访问形式。

def list = [1,2,3]

println list.class
println list[0]

Groovy还提供了负下标和范围索引,负下标表示从最后一个开始数,-1为最后一个

println list[-1]

Groovy还提供了范围索引类

println list[0..1]

(14)

1.传统Java遍历方法

def list = [1,2,3]

for (def i = 0; i < list.size(); i++)
{
println list[i]
}

for (def i : list)
{
println i
}

2.Groovy中遍历方法

def list = [1,2,3]

for (def i in list)
{
println i
}

list.each
{
t -> println t
}

list.each
{
// 魔术变量it可以省略
println it
}

(15)Map
Map是由键值对(key-value,通过冒号分隔键与值)组成的集合。

def map = ["key1":0,"key2":1,"key3":1]

println map["key1"]
println map.key2

Map遍历
1、Java方法

def map = ["key1":0,"key2":1,"key3":2]

for (def entry : map.entrySet())
{
println "key: ${entry.key},value: ${entry.value}"
}

2、Groovy方法

def map = ["key1":0,"key2":1,"key3":2]

map.each
{
println "key: ${it.key},value: ${it.value}"
}

map.each
{
key, value -> println "key: ${key},value: ${value}"
}

groovy学习知识的更多相关文章

  1. Atitit learn by need 需要的时候学与预先学习知识图谱路线图

    Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...

  2. 如何系统学习知识图谱-15年+IT老兵的经验分享

    一.前言 就IT而言,胖子哥算是老兵,可以去猝死的年纪,按照IT江湖猿龄的规矩,也算是到了耳顺之年:而就人工智能而言,胖子哥还是新人,很老的新人,深度学习.语音识别.人脸识别,知识图谱,逐个的学习了一 ...

  3. 华为云ModelArts图深度学习,学习知识还能考取微认证

    作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...

  4. 豆瓣 9.0 分的《Python学习知识手册》|百度网盘免费下载|

    豆瓣 9.0 分的<Python学习知识手册>|百度网盘免费下载| 提取码:nuak 这是之前入门学习Python时候的学习资料,非常全面,从Python基础.到web开发.数据分析.机器 ...

  5. 【Deeplearning】(转)深度学习知识网络

    转自深度学习知识框架,小象牛逼! 图片来自小象学院公开课,下面直接解释几条线 神经网络 线性回归 (+ 非线性激励) → 神经网络 有线性映射关系的数据,找到映射关系,非常简单,只能描述简单的映射关系 ...

  6. Groovy学习--基本语法了解

    x项目用到gradle,学习gradle之前准备先过一遍Groovy的语法.这里参考:Groovy入门. 该博客没有系统的讲解Groovy的语法和原理,仅仅只是罗列了使用Groovy的常规方法.我照着 ...

  7. Groovy学习笔记(二)

    在上一篇文章中我们主要学习了如何搭建Groovy开发环境,为我们的Groovy之旅做好了准备工作,不知道你是否准备好了?接下来我们就一起看看Groovy与我们熟悉的Java有什么异同. Groovy是 ...

  8. 第23篇 js快速学习知识

    前面说了js的一些高级方面的基础知识,这些都是比较容易出错的和比较难理解的东西,除了这些之外其它的知识都比较简单了,基础学好了,扩展起来就是小意思.今天说说js方面可以快速学习和入门的知识. 1.闭包 ...

  9. 马凯军201771010116《面向对象与程序设计Java》第十五周学习知识总结

    实验十五  GUI编程练习与应用程序部署 一.知识学习部分 清单文件 每个JAR文件中包含一个用于描述归档特征的清单文件(manifest).清单文件被命名为MANIFEST.MF,它位于JAR文件的 ...

随机推荐

  1. pt站 扫盲贴 面向小白

    1.什么是pt站? 大家应该知道种子,平时下电影的渠道除了百度云,就是种子了.这种普通的的种子称为bt. pt是私人种,和bt的区别是:不是谁想下就能下的,你得加入一个社区,入了伙,社区成员之间才能相 ...

  2. 温顾知新系列-JAVA网络编程系统(1)- 流

    一.字节流 1. 输出流 Java的基本输出流类是java.io.OutputStream; public abstract calss OutputStream 此类常用的写入数据的基本方法如下: ...

  3. 20190319xlVBA_根据考勤数据统计缺勤缺考数据

    Sub SubtotalPickFile() Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA.Timer Dim fi ...

  4. jTimer

      很多时候我们需要按时间间隔执行一个任务,当满足一定条件时停止执行.此插件旨在解决这一经常遇到的问题. jTimer: (function ($) { $.extend({ timer: funct ...

  5. DFS 之 全排列

    题目描述输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 我们可以模拟出n个盒子和n张卡片,我们需要将n张卡片分别放到n个盒子里,且每个盒子只能放1张卡 ...

  6. [poj P2482] Stars in Your Window

    [poj P2482] Stars in Your Window Time Limit: 1000MS  Memory Limit: 65536K Description Fleeting time ...

  7. Linux下输入某些命令时会提示:bash:command not found

    首先,查看$PATH中是否包含了这些命令. $PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系列的目录.当运行程序时,linux到这些目录下搜索进行编译链接. 格式: PATH ...

  8. Python3+PyCharm+Django+Django REST framework开发教程

    一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...

  9. vscode 创建.net core mvc

    cd 进一个文件夹 1,创建一个sln 工程文件  [ dotnet new sln -n Demo1 ] 2,创建一个mvc项目 [ dotnet new mvc -n Demo1.Web ] 3, ...

  10. 指导手册02:伪分布式安装Hadoop(ubuntuLinux)

    指导手册02:伪分布式安装Hadoop(ubuntuLinux)   Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...