当前位置:网站首页>Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1
Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1
2022-07-31 09:20:00 【简明编程】
Gradle系列——Groovy概述,基础使用(源于文档7.5版本,SpringBoot使用)day2-1
- Groovy概述
- Groovy基础使用
- 基础语法
- 1.构建Groovy类
- 2.构建Groovy脚本
- 3.混合定义类与脚本
- 4.定义变量已经方法返回值
- 5.注释
- 6.默认类,方法,字段用public修饰
- 7.无需使用;分割结尾(但我习惯使用)
- 8.字符串使用单引号
- 9.字符串使用双引号
- 10.字符串使用三引号
- 11.在类中默认生成set和get方法
- 12.Groovy可直接运行
- 13.在方法中return可以不写,默认最后一行为返回
- 14.关键字
- 15.转义字符
- 16.三双号字符串
- 17.数字类型后缀
- 18.List
- 19.as指定类型
- 20.数组
- 21.map
- 22.算术运算符
- 23.赋值运算符
- 24.关系运算符
- 25.逻辑运算符
- 26.按位运算符
- 27.位移运算符
- 28.三元运算符
- 29.方法指针运算符
- 30.if判断
- 31.循环
- 32.try catch
- 常规使用案例1
由于本文默认你有Java基础所以我会写的很简单
Groovy概述
文档地址
Apache Groovy 是一个 强大的 、 可选类型 和 动态 具有 静态类型和静态编译 用于 Java 平台的 旨在通过简洁、 熟悉且易于学习 语法 。 它可以与任何 Java 程序顺利集成,并立即交付给您的应用程序 强大的功能,包括脚本功能、 领域特定语言 创作、 运行时和编译时 元编程 和 函数编程。
优点
- 易于Java开发人员学习
- 具有强大功能(闭包,构建器,函数式编程等)
- Java集成
- 灵活扩展,先进的集成和定制机制
- 强大的丰富的生态(Web 开发、响应式应用程序、并发/异步/并行库、测试 框架、构建工具、代码分析、GUI构建 )
- 易开发脚本(非常适合编写简洁和可维护的测试,以及所有构建和自动化任务 )
- Java插件编写支持
下载Groovy
https://groovy.apache.org/download.html
Groovy需求
Groovy 4.0 需要 Java 8+,最高支持 Java 16
Groovy安装
解压打开即可,可以不配环境变量
IDEA中构建Groovy项目
Groovy基础使用
- Groovy完全兼容Java
- 在一个groovy文件中可以混合类的定义和脚本定义。此时不要再定义一个和文件同名的类
- groovy中使用def定义变量、方法,不建议使用具体的数据类型
- groovy中的注释:单行注释用川,多行注释用:/**/
- Groovy中语句末尾的分号是可以省略的,以换行作为结束。
- 默认类、方法、字段都是public修饰的
基础语法
1.构建Groovy类
2.构建Groovy脚本
与Groovy类不同的是我们需要删除class
3.混合定义类与脚本
类与脚本可以同时存在,测试类的名称不能和文件名相同
println("hello world")
class test{
}
4.定义变量已经方法返回值
使用def声明
class test{
def name;
def pwd;
private def getName(){
}
}
5.注释
单行://
多行:/**/
6.默认类,方法,字段用public修饰
7.无需使用;分割结尾(但我习惯使用)
8.字符串使用单引号
这是常规使用,没什么特别的
9.字符串使用双引号
作为引用变量${},有运算能力
10.字符串使用三引号
模板字符串,支持换行
11.在类中默认生成set和get方法
Test1类
package cn.test
class Test1 {
def username = "zhangsan";
}
测试脚本
package cn.test
def test1 = new Test1()
println(test1.getUsername())
12.Groovy可直接运行
13.在方法中return可以不写,默认最后一行为返回
14.关键字
15.转义字符
16.三双号字符串
结合三单号字符串和双引号字符串,可换行模板并设置插值有运算能力
""" word """
17.数字类型后缀
18.List
Groovy 列表是普通的 JDK java.util.List,因为 Groovy 没有定义自己的集合类。 定义列表文字时使用的具体列表实现默认是 java.util.ArrayList
def list = [1,2,3,4]
19.as指定类型
这样就从Number转化为String了
def salary = 169.8 as String
20.数组
String[] arrStr = ['Ananas', 'Banana', 'Kiwi']
21.map
def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']
//当然你也可以像下面这样
def map = new HashMap()
map.put("name","zhangsan")
println(map.get("name"))
22.算术运算符
运算符 | 说明 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
** | 幂 |
23.赋值运算符
- =
- +=
- -=
- *=
- /=
- %=
- **=
24.关系运算符
25.逻辑运算符
- &&:逻辑和
- ||:逻辑或
- !:逻辑否
26.按位运算符
- &: 按位“和”
- |: 按位“或”
- ^: 按位“异或”(异或“或”)
- ~: 按位求反
int a = 0b00101010
assert a == 42
int b = 0b00001000
assert b == 8
assert (a & a) == a
assert (a & b) == b
assert (a | a) == a
assert (a | b) == a
int mask = 0b11111111
assert ((a ^ a) & mask) == 0b00000000
assert ((a ^ b) & mask) == 0b00100010
assert ((~a) & mask) == 0b11010101
27.位移运算符
<<
: 左移>>
: 右移>>>
: 右移无符号
28.三元运算符
和Java一样
a > 0 ? a : b
29.方法指针运算符
相当于直接调用方法
方法指针运算符 ( .&) 可用于在变量中存储对方法的引用, 为了以后调用它:
def str = 'example of method reference'
def fun = str.&toUpperCase
使用方法指针有很多优点。 首先,这种方法指针的类型是 一个 groovy.lang.Closure, 所以它可以在任何需要使用闭包的地方使用
def transform(List elements, Closure action) {
def result = []
elements.each {
result << action(it)
}
result
}
String describe(Person p) {
"$p.name is $p.age"
}
def action = this.&describe
def list = [
new Person(name: 'Bob', age: 42),
new Person(name: 'Julia', age: 35)]
assert transform(list, action) == ['Bob is 42', 'Julia is 35']
30.if判断
if(){
}else if(){
}else{
}
31.循环
for
for (int i = 0; i < 5; i++) {
message += 'Hi '
}
for in
def x = 0
for ( i in 0..9 ) {
x += i
}
while
def x = 0
def y = 5
while ( y-- > 0 ) {
x++
}
do while
def count = 5
def fact = 1
do {
fact *= count--
} while(count > 1)
32.try catch
try{
...
}catch(...){
...
}finally{
....
}
常规使用案例1
Test1类
package cn.test
class Test1 {
//注释
def des = "zhangsan"
def username = "define user name : ${des}"
def pwd = '12345'
def word = '''word1
word2'''
def combine(def str){
username = str + username
}
}
测试脚本
package cn.test
def test = new Test1()
println(test.username)
println(test.pwd)
println(test.word)
println(test.getUsername())
println(test.getWord())
println(test.combine("username:"))
println(test.combine('''username is :'''))
println(test.combine('user is:'))
边栏推荐
猜你喜欢
postgresql 范围查询比索引查询快吗?
canvas粒子变幻各种形状js特效
ONES 入选 CFS 财经峰会「2022数字化创新引领奖」
js department budget and expenditure radar chart
安装gnome-screenshot截图工具
二叉树的搜索与回溯问题(leetcode)
Come n times - 06. Print the linked list from end to end
loadrunner-controller-手动场景Schedule配置
MySQL 的几种碎片整理方案总结(解决delete大量数据后空间不释放的问题)
js部门预算和支出雷达图
随机推荐
Feign介绍
Linux 创建mysql数据库并创建账号密码
loadrunner录制问题
Binary tree search and backtracking problem (leetcode)
Are postgresql range queries faster than index queries?
文件管理:目录管理
Canvas particles change various shapes js special effects
(C语言基础)原样输入输出
7. JS ES6新增语法 new Map详讲,还有一道代码实战案例帮你快上手new Map
qt pass custom structure parameters in different threads
MySQL 的几种碎片整理方案总结(解决delete大量数据后空间不释放的问题)
实现线程池
qt在不同的线程中传递自定义结构体参数
一些计时软件,生产力工具
ONES 入选 CFS 财经峰会「2022数字化创新引领奖」
HTC官方RUU固件提取刷机包rom.zip以及RUU解密教程
MySQL 操作语句大全(详细)
编译器R8问题Multidex
优信年营收16亿:亏损3亿 已与蔚来资本及58集团签署股权协议
Kotlin—基本语法(三)