Groovy学习笔记

Groovy & Gradle

Groovy简介

1. what:

Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。

2. when/where

  1. 既可以面向对象编程,也可以作为纯粹的脚本语言
基本特点

1、 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持。。
2、为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。
3、 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。
4、受检查类型异常(Checked Exception)也可以不用捕获。
5、 Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。
6、在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。
7、支持单元测试和模拟(对象),可以 简化测试。
8、无缝集成 所有已经存在的 Java对象和类库。
9、直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。 [2]
10、支持函数式编程,不需要main函数。
11、一些新的运算符。
12、默认导入常用的包。
13、断言不支持jvm的-ea参数进行开关。
14、支持对对象进行布尔求值。
15、类不支持default作用域,且默认作用域为public。
16、groovy中基本类型也是对象,可以直接调用对象的方法。

3. 学习资料网址

Learn Groovy 学习教程

Apachy Groovy 官网资料

Groovy 学习笔记

Runtime and compile-time metaprogramming

Groovy 允许在运行期和编译期修改类模型和类的方法

1. Basic Syntax

默认的引入

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

2. 注释

同java

行尾标记符

同Java 用分号结尾

定义方法,变量

采用def

def employeename 
def student1 
def student_name

保留关键字

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           

3. 数据类型

数字类型后缀

通过使用大写或小写类型后缀(见下表),我们能强制将一个数字(包括二进制,八进制,十六进制)给一个指定类型。

Type            Suffix
BigInteger      G 或 g
Long            L 或 l
Integer         I 或 i
BigDecimal      G 或 g
Double          D 或 d
Float           F 或 f

eg:

assert 42I == new Integer('42')
assert 42i == new Integer('42') // lowercase i more readable
assert 123L == new Long("123") // uppercase L more readable
assert 2147483648 == new Long('2147483648') // Long type used, value too large for an Integer
assert 456G == new BigInteger('456')
assert 456g == new BigInteger('456')
assert 123.45 == new BigDecimal('123.45') // default BigDecimal type used
assert 1.200065D == new Double('1.200065')
assert 1.234F == new Float('1.234')
assert 1.23E23D == new Double('1.23E23')
assert 0b1111L.class == Long // binary
assert 0xFFi.class == Integer // hexadecimal
assert 034G.class == BigInteger // octal

4. 变量

Groovy变量定义有两种方式: (Groovy 解析器所需要的)

  1. native syntax
  2. 用关键字 def

变量的基本类型:

byte
short
int
long
float
double
char
Boolean
String
变量声明

5. Groovy - Operators 运算符

  1. 算数运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 按位运算符
  5. 赋值运算符
  6. 区间运算符

6. Groovy - Loops

  1. while
  2. for
  3. for in
  4. break
  5. continue

7. Groovy - Decision Making

  1. if
  2. if/else
  3. Nested If Statement
  4. Switch Statement
  5. Nested Switch Statement

8. Groovy - Methods

方法的定义

两种方式.

  1. 采用def关键字
  2. 采用返回值的方式
方法的参数

可以有参数的默认值

方法的返回值
局部参数和外部参数

Groovy 可以使用 this,方式同java

9. Groovy - File I/O

Groovy提供了一系列方便的工具类来操作I/O

  1. Reaing files
  2. Writing files
  3. Traversing file trees
  4. Reading and writing data objects to files

    此外,还可以使用普通的java对象操作文件I/O

    java.io.File
    java.io.InputStream
    java.io.OutputStream
    java.io.Reader
    java.io.Writer

10. Groovy - Optionals

Groovy 是可选类型的语言, Java是强类型语言,因此编译器需要知道所有变量的类型,
并且在编译时遵守和理解约定

可选的类型 通过 def 关键字实现的

优点: 开发阶段是比较强大的,
缺点: 导致后期的维护变得复杂.

To get a handle on how you can utilize optional typing in Groovy without getting your codebase into an unmaintainable message, it is best to embrace the philosophy of “duci typing” int your applications.

要了解如何在不使代码库陷入无法维护的混乱的情况下使用Groovy中的可选类型,最好在应用程序中采用”duck typing”的理念.

Duck typing

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

11. Groovy - Numbers

同Java

12. Groovy - Strings

构建

支持 单引号,双引号,三引号

class Example { 
   static void main(String[] args) { 
      String a = 'Hello Single'; 
      String b = "Hello Double"; 
      String c = "'Hello Triple" + "Multiple lines'";

      println(a); 
      println(b); 
      println(c); 
   } 
}
字符串索引

同Java, 从0开始
不过可以倒序,区间方便写

class Example { 
   static void main(String[] args) { 
      String sample = "Hello world"; 
      println(sample[4]); // Print the 5 character in the string

      //Print the 1st character in the string starting from the back 
      println(sample[-1]); 
      println(sample[1..2]);//Prints a string starting from Index 1 to 2 
      println(sample[4..2]);//Prints a string starting from Index 4 back to 2 

   } 
}
字符串的基本操作

13. Groovy - Ranges 区间

14. Groovy - List

15. Groovy - Map

16. Groovy - Dates & Times

17. Groovy - Regular Expressions

18. Groovy - Exception Handling


类方法
类变量

继承

抽象类

接口

19. Groovy - Generics 泛型

20. Groovy - Traits

应该是为了实现多继承

21. Groovy - Closures 重点

闭包 是简短的匿名代码块

22. Groovy - Closures in Collections and String
23. Groovy - Annotations

有些新增的操作,不熟悉

24. Groovy - XML

XML Markup Builder –> 构建XML

XML Parsing –> 解析XML

25. Groovy - JMX

监控系统的运行状态

26. Groovy - JSON

JsonSlurper –> 解析json到Groovy数据中

JsonOutput –> 序列化Groovy数据到JSON 字符串中

27. Groovy - DSLS
28. Groovy - Meta Object Programming
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI老潘信息差

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

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

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

打赏作者

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

抵扣说明:

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

余额充值