Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1

181 篇文章 3 订阅
8 篇文章 0 订阅


由于本文默认你有Java基础所以我会写的很简单

Groovy概述

文档地址

http://www.groovy-lang.org/

Apache Groovy 是一个 强大的 、 可选类型 和 动态 具有 静态类型和静态编译 用于 Java 平台的 旨在通过简洁、 熟悉且易于学习 语法 。 它可以与任何 Java 程序顺利集成,并立即交付给您的应用程序 强大的功能,包括脚本功能、 领域特定语言 创作、 运行时和编译时 元编程 和 函数编程。

优点

  1. 易于Java开发人员学习
  2. 具有强大功能(闭包,构建器,函数式编程等)
  3. Java集成
  4. 灵活扩展,先进的集成和定制机制
  5. 强大的丰富的生态(Web 开发、响应式应用程序、并发/异步/并行库、测试 框架、构建工具、代码分析、GUI构建 )
  6. 易开发脚本(非常适合编写简洁和可维护的测试,以及所有构建和自动化任务 )
  7. Java插件编写支持

下载Groovy

https://groovy.apache.org/download.html

Groovy需求

Groovy 4.0 需要 Java 8+,最高支持 Java 16

Groovy安装

解压打开即可,可以不配环境变量
在这里插入图片描述

IDEA中构建Groovy项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Groovy基础使用

  1. Groovy完全兼容Java
  2. 在一个groovy文件中可以混合类的定义和脚本定义。此时不要再定义一个和文件同名的类
  3. groovy中使用def定义变量、方法,不建议使用具体的数据类型
  4. groovy中的注释:单行注释用川,多行注释用:/**/
  5. Groovy中语句末尾的分号是可以省略的,以换行作为结束。
  6. 默认类、方法、字段都是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.赋值运算符

  1. =
  2. +=
  3. -=
  4. *=
  5. /=
  6. %=
  7. **=

24.关系运算符

在这里插入图片描述

25.逻辑运算符

  1. &&:逻辑和
  2. ||:逻辑或
  3. !:逻辑否

26.按位运算符

  1. &: 按位“和”
  2. |: 按位“或”
  3. ^: 按位“异或”(异或“或”)
  4. ~: 按位求反
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.位移运算符

  1. <<: 左移
  2. >>: 右移
  3. >>>: 右移无符号

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:'))

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值