当前位置:网站首页>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:'))
边栏推荐
猜你喜欢
Kotlin—基本语法(一)
51单片机-----外部中断
期刊投递时的 Late News Submission 是什么
Pytorch学习记录(七):自定义模型 & Auto-Encoders
如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南
二叉树的搜索与回溯问题(leetcode)
js radar chart statistical chart plugin
SQL join table (inner join, left join, right join, cross join, full outer join)
生成随机数
Kotlin—基本语法(三)
随机推荐
MySQL (2)
多个js雷达图同时显示
SQL join table (inner join, left join, right join, cross join, full outer join)
Which strings will be parsed as null by FastJson?
高并发-高可用-高性能
UE4插件软链接(关联)
loadrunner脚本--添加集合点
【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?
Binary tree search and backtracking problem (leetcode)
postgresql 生成随机日期,随机时间
ARC在编译和运行做了什么?
Job hunting product manager [9] How to write a good resume in job hunting season?
通过栗子来学习MySQL高级知识点(学习,复习,面试都可)
【节选】吴恩达给出的AI职业生涯规划
VMware下安装win10启动后进入Boot Manger界面如何解决
来n遍剑指--09. 用两个栈实现队列
高并发高可用高性能的解决方案
2019 NeurIPS | Graph Convolutional Policy Network for Goal-Directed Molecular Graph Generation
(selenium)Service geckodriver unexpectedly exited. Status code was: 64
内联元素居中