Groovy基础:

目录

Groovy概述:

Groovy的编写和调试:

基本语法:

1.文字:

2.数据类型:

3.变量:

4.运算符:

5.循环语句:

6.条件语句:

7.方法:

8.类:

9.范围:

10.容器类:

11.日期:

12.异常:

12.1:断言:

13.文件I/O:

14.泛型:

15.闭包:

15.1:定义:

15.2:使用:

16.注解:

17.命令行:

17.1:补充:

18.其他:

18.1:asType:

18.2:安全取值:

18.3:with操作符:


Groovy概述:

Groovy是Apache 旗下的一种基于JVM的面向对象的编程语言,既可以用于面向编程,又可以用作纯粹的脚本语言。在语言的设计上,Groovy吸纳了Python、Ruby和Smalltalk语言的优秀特性,比如动态类型转换、闭包和元编程支持。Groovy与Java可以互相调用并结合编程,比如在写Groovy的时候忘记了语法可以直接按Java的语法继续写,也可以在Java中调用Groovy脚本。与Java相比,Groovy语法更加灵活和简洁,可以用更少的代码来实现与Java实现的相同功能。

Groovy的编写和调试:

Groovy的代码可以在Android Studio和IntelliJ IDEA等IDE中进行编写和调试,这种方式的缺点是需要配置环境,这里推荐在文本中编写代码并结合命令行进行调试(文本准荐使用Sublime Text),关于命令行请查看后续。Groovy 编写和调试的具体操作步骤就是:在一个目录中新建build.gradle文件,在build.gradle文件中新建一个task,在task中编写Groovy代码,用命令行进入这个build.gradle文件所在的目录,运行gradle task名称等命令行对代码进行调试。

基本语法:

1.文字:

文字是在 groovy 中表示固定值的符号。 groovy 语言具有整数、浮点数、字符和字符串的表示法。

2.数据类型:

Groovy 提供了多种内置数据类型。 以下是 Groovy 中定义的数据类型列表 :

  • byte − 这用于表示一个字节值。 一个例子是 2。范围:-128 到 127。

  • short − 这用于表示一个短数字。 一个例子是 10。范围:-32,768 到 32,767。

  • int − 这用于表示整数。 一个例子是 1234。范围:-2,147,483,648 到 2,147,483,647。

  • long − 这用于表示长数字。 一个例子是 10000090。范围-9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807。

  • float − 这用于表示 32 位浮点数。 一个例子是 12.34。范围:1.40129846432481707e-45 到 3.40282346638528860e+38。

  • double − 这用于表示 64 位浮点数,这是有时可能需要的较长的十进制数表示。 例如 12.3456565。范围:4.94065645841246544e-324d  到 1.79769313486231570e+308d。

  • char − 这定义了单个字符文字。 一个例子是"a"。

  • Boolean − 这表示一个布尔值,可以为真或假。

  • String − 这些是用 the form 字符链表示的文本文字。 例如 "Hello World"。

  • 类型除了基本类型之外,还允许使用以下对象类型(有时称为包装类型)。例如:java.lang.Byte,java.lang.Short,java.lang.Integer,java.lang.Long,java.lang.Float,java.lang.Double。

3.变量:

Groovy 中的变量可以通过两种方式定义 − 使用本机语法作为数据类型,或者是使用def 关键字。 对于变量定义,必须明确提供类型名称或使用"def"替换。 这是 Groovy 解析器所要求的。

4.运算符:

Groovy 有以下几种运算符 :

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 范围运算符。Groovy 支持范围的概念,并在 .. 符号的帮助下提供范围运算符的符号。

5.循环语句:

Groovy支持while循环,for循环,for in循环,支持遍历范围,列表,Map,数组和字符串等等多种类型。另外break语句和continue语句也支持。

6.条件语句:

Groovy支持if语句,if/else语句,switch语句。

7.方法:

Groovy 中的方法是使用返回类型或 def 关键字定义的。 方法可以接收任意数量的参数。 在定义参数时不需要显式定义类型。 可以添加诸如 public、private 和 protected 等修饰符。 默认情况下,如果没有提供可见性修饰符,则该方法是公共的。Groovy定义方法时,语句后面的语句可以省略,方法的括号可以省略,参数类型可以省略,return可以省略(省略return会把方法的最后一行作为返回值)。

def test(a,b){
//内容
}

test(1,2)
test 1,2

8.类:

Groovy类与Java类非常的相似,有以下区别:

  • 默认类的修饰符为public。
  • 没有可见性修饰符的字段会自动生成对应的setter方法和getter方法。
  • 类不需要与它的源文件有相同的名字,但是建议采用相同的名字。

9.范围:

范围是指定值序列的简写。 Range 由序列中的第一个值和最后一个值表示,Range 可以是包含的,也可以是排除的。 包含范围包括从第一个到最后一个的所有值,而排他范围包括除最后一个之外的所有值。当然也可以升序和降序。

10.容器类:

Groovy没有定义自己的集合类,它在Java集合类的基础上进行了增强和简化,Groovy的List对应的是Java中的List接口,默认的实现类是Java中的ArrayLiat,当然也可以使用as操作符来显式的指定List的实现类为LinedList。要处理列表中的数据,我们必须能够访问各个元素。 Groovy 列表使用索引运算符 [] 进行索引。 列表索引从零开始,它指的是第一个元素。

def num=[1,2,3]
def l=[1,2,3] as LinkedList

Map(也称为关联数组、字典、表和散列)是对象引用的无序集合。 Map 集合中的元素通过键值访问。 Map 中使用的键可以是任何类。 当我们插入 Map 集合时,需要两个值:键和值。默认的实现类为LinkedHashMap。

​def name=[one:'1',two:'2',three:'3']

def one='key'
def name=[(one):'1',two:'2',three:'3']
//如果想要以one的值作为键,则需要使用()的形式,否则还是该变量
​

11.日期:

Date 类表示特定的时间瞬间,精度为毫秒。 Date 类有两个构造函数。

12.异常:

任何编程语言都需要异常处理来处理运行时错误,以便维持应用程序的正常流程。异常通常会破坏应用程序的正常流程,这就是我们需要在应用程序中使用异常处理的原因。方法使用 try 和 catch 关键字的组合来捕获异常。 在可能产生异常的代码周围放置了一个 try/catch 块。所有可能引发异常的代码都放在受保护的代码块中。在 catch 块中,您可以编写自定义代码来处理您的异常,以便应用程序可以从异常中恢复。

12.1:断言:

Groovy断言和Java的断言不相同,Groovy的断言一直处于开启状态,是进行单元测试的首选方式。当断言的条件为false时,程序会抛出异常,不再执行下面的代码。断言使用assert关键字。

13.文件I/O:

在处理 I/O 时,Groovy 提供了许多帮助方法。 Groovy 提供了更简单的类来为文件提供以下功能。

  • 读取文件
  • 写入文件
  • 遍历文件树
  • 读取数据对象并将其写入文件

除此之外,您始终可以使用下面列出的普通 Java 类进行文件 I/O 操作。

  • java.io.File
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.Reader
  • java.io.Writer
def file = new File(路径)
file.eachLine{println it}
//eachLine 方法内置在 Groovy 的 File 类中,目的是确保读取文本文件的每一行


def file = new File(路径)
println file.text  
//如果你想以字符串的形式获取文件的全部内容,可以使用文件类的 text 属性  


new File('E:/','Example.txt').withWriter('utf-8') { 
         writer -> writer.writeLine 'Hello World' 
      }  
//如果要写入文件,则需要使用 writer 类将文本输出到文件 

14.泛型:

在定义类、接口和方法时,泛型使类型(类和接口)成为参数。 就像在方法声明中使用的更熟悉的形式参数一样,类型参数为您提供了一种通过不同输入重用相同代码的方法。 区别在于形式参数的输入是值,而类型参数的输入是类型。

public class 类<T> {
   private T 字段;
	
   public T 泛型方法() {
     //
   }
	
   public void 方法(T 参数) {
      //
   } 

15.闭包:

Groovy中的闭包是一个开放,匿名的代码块,可以接受参数,返回值并分配给变量,简而言之,是一个匿名的代码块,可以接受参数,有返回值。

15.1:定义:

闭包的定义语法为: { 参数列表 -> 语句 } 。多参数用逗号分割。注意:

  • 参数列表的部分是可选的,如果闭包只有一个参数的话,则参数的名字也是可选的,因为Groovy会隐式的指定it作为参数名。当然也可以直接使用it代替参数名。
  • 如果期望声明一个无参数的闭包,需要显式添加->来声明空参数列表, 以避免Groovy提供默认参数it。
//{参数列表->语句}

{println it}
//默认指定it作为参数名

{it-> println it}
//显式指定it

{ ->语句}
//无参

15.2:使用:

  • 闭包是groovy.lang.Cloush类的一个实例。
  • 可以将闭包赋值给变量或者字段,还可通过添加括号、call方法进行传参、调用。同时闭包在定义过程中还支持带有缺省值的参数。这样在进行闭包调用时,对于未给定的参数值, 闭包会使用缺省值。
  • 对于闭包而言,闭包中如果未显式使用return语句, 返回最后一个表达式的结果;反之如果闭包中显式使用return语句, 返回指定值。
  • 闭包可以当作方法进行调用,也可以显示调用call方法。
def a = {it->println it}//赋值给变量

def b={123}
assert b.call()==123//调用call方法

def c = { x, y -> x+y }
assert c(1,3) == 4//两个参数

def d = { x, y=5 -> x*y }
assert d.call( 1,7 ) == 7//缺省值

def result = d.call()//返回值

16.注解:

注解 是一种元数据形式,其中它们提供有关不属于程序本身的程序的数据。 注解对其注解的代码的操作没有直接影响。在 Groovy 中,一个基本注解如下所示 :@interface - at 符号字符 (@) 向编译器指示后面是注解。注解可以以the form的方法定义成员,没有主体和可选的默认值。Groovy 中注解的一个很好的特性是您也可以将闭包用作注解值。 因此,注解可以与多种表达方式一起使用。

17.命令行:

称为 groovysh 的 Groovy shell 可轻松用于评估 groovy 表达式、定义类和运行简单程序。 安装 Groovy 时会安装命令行 shell。

命令行参数全名详情
-C--color[=FLAG]启用或禁用 ANSI 颜色
-D--define=NAME=VALUE定义系统属性
-T--terminal=TYPE指定要使用的终端类型
-V--version显示版本
-classpath指定在哪里找到类文件 – 必须是第一个参数
-cp--classpath'-classpath' 的别名
-d--debug--debug 开启调试输出
-e--evaluate=arg启动交互式会话时首先评估选项
-h--help显示此帮助信息
-q--quiet抑制多余的输出
-v--verbose启用详细输出

同时可以在命令提示符下定义一个类、创建一个新对象并调用该类的方法。

17.1:补充:

shell 有许多不同的命令,它们提供对 shell 环境的丰富访问。 以下是它们的列表以及它们的作用。

序号命令与说明
1

:help

(:h ) 显示此帮助信息

2

?

(:? ) 别名: :help

3

:exit

(:x ) 退出 shell

4

:quit

(:q ) 别名: :exit

5

import

(:i ) 将一个类导入命名空间

6

:display

(:d ) 显示当前缓冲区

7

:clear

(:c ) 清除缓冲区并重置提示计数器

8

:show

(:S ) 显示变量、类或导入

9

:inspect

(:n ) 使用 GUI 对象浏览器检查变量或最后结果

10

:purge

(:p ) 清除变量、类、导入或首选项

11

:edit

(:e ) 编辑当前缓冲区

12

:load

(:l ) 将文件或 URL 加载到缓冲区中

13

.

(:. ) 别名: :load

14

.save

(:s ) 将当前缓冲区保存到文件

15

.record

(:r ) 将当前会话记录到文件

16

:alias

(:a ) 创建别名

17

:set

(:= ) 设置(或列出)首选项

18

:register

(:rc) 向 shell 注册一个新命令

19

:doc

(:D ) 打开显示参数文档的浏览器窗口

20

:history

(:H ) 显示、管理和调用编辑行历史

18.其他:

18.1:asType:

asType可以用于数据的类型转换。

18.2:安全取值:

在Java中,要安全的获取某一个对象的值可能需要大量的if语句来进行非空判断,而在Groovy中可以使用?.来进行安全取值。

18.3:with操作符:

对同一个对象的属性进行赋值时,可以使用with操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mo@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值