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、 构建在强大的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. 学习资料网址
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 解析器所需要的)
- native syntax
- 用关键字 def
变量的基本类型:
byte
short
int
long
float
double
char
Boolean
String
变量声明
5. Groovy - Operators 运算符
- 算数运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
- 区间运算符
6. Groovy - Loops
- while
- for
- for in
- break
- continue
7. Groovy - Decision Making
- if
- if/else
- Nested If Statement
- Switch Statement
- Nested Switch Statement
8. Groovy - Methods
方法的定义
两种方式.
- 采用def关键字
- 采用返回值的方式
方法的参数
可以有参数的默认值
方法的返回值
局部参数和外部参数
Groovy 可以使用 this,方式同java
9. Groovy - File I/O
Groovy提供了一系列方便的工具类来操作I/O
- Reaing files
- Writing files
- Traversing file trees
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 字符串中