【Groovy语言基础总结】基础语法、编译原理、多层嵌套json解析

【Groovy语言基础总结】编译原理、多层嵌套json解析

1. Groovy是什么?

Groovy是一种面向对象编程语言,也是纯粹的脚本语言,一种用于Java虚拟机的动态语言,groovy完全兼容Java语法。

2. Groovy的编译原理以及为什么是完全兼容Java语法?

编译所写的test.groovy脚本后,会在项目包下产生一个out目录,里边是 .groovy经过编译运行后转换成了相应的 .class文件,
每一个.class都有一个静态main方法,每个groovy脚本都会生成一个static main函数,

  • 当运行groovy脚本时,其实是用java去执行main方法,
  • groovy脚本中的代码都会被加载到Object run()函数中,通过对.class编译运行后返回输出的内容。
    groovy代码:
    在这里插入图片描述
    经过编译运行后生成的.class代码:
    在这里插入图片描述
3. Groovy 变量定义:

定义变量使用 def 关键字,但不是必须,为了增加代码可读性,写一下也不费事。
定义变量:

def v = 'helle'
println v
println(v)

结尾可以不加分号,输出也可以不加括号。

4. groovy定义函数:

有返回类型的函数,不用加def关键字去定义函数;无返回类型的函数,必须加def关键字。
可以不用return,则最后一行代码值的类型就是函数的返回类型。

def fun1(){
    'hello'
}
println fun1()
println(fun1())
5. 引号使用说明:
  • 单引号’ '和双引号" ":使用单引号的话不会对 转义,但用双引号的话会对 转义,但用双引号的话会对 转义,但用双引号的话会对转义,即会先求值。
def v = 'hello'
def s1 = "v is $v"
println v
  • Groovy里边 ‘’’ ‘’’ 和 “”" “”" 的区别:

如果直接引用 ${}变量内容的话,需要区分windows和Linux环境:

Windows下:必须使用双引号"“” “”",${}变量引用才起作用

Linux下:使用单引号’‘’ ‘’'和双引号"“” “”"都可以,${}变量引用都起作用

6. 循环:

3种写法:for(i;<;++) , for in,while

* for(i=0;i<5;i++){
    println "hello"
 }

* for (i in 1..5){
    println "hello"
 }
7. 数据类型(1.容器类:List,Map,Range 2.闭包 3.java的基本数据类型)
  • List:
/变量定义:List变量由[]定义,其元素可以是任何对象
def List1 = ['hello',true,1,false]
println(List1)
println List1[0]  //获取第1个数据
println List1[1]  //获取第2个数据
println List1[2]  //获取第3个数据
println List1[3]  //获取第4个数据
println( "集合长度:" + List1.size())

//赋值
List1[6] = 2
List1<<20 //往List1里添加数据
println List1
println "List长度:"+ List1.size()
  • Range:
def range = 5..10
println(range)
range.size()
range.remove(1)
range.clear() 
range.iterator() 
def v1 = range.get(1) 
range.contains(10) 
range.last()
  • 闭包(Closure):一种数据类型,它代表了一段可执行的代码
def fun1 = {
    v1 ->  //箭头前边是参数变量,后边是相关代码
        def s = "闭包," + v1
}
println(fun1.call())  //调用方式1
println(fun1.call("Param1")) //调用方式2
println(fun1("Param2"))
  • map:
def map = [v1: "haha", v2: "heihei", v3: "gaga"]
println map
println("数据长度:" + map.size())
println(map.keySet())
println(map.values())
println("v1的值:" + map.v1)
println("v1的值:" + map.get("v1"))

//map元素赋值
map.put("v4", "dada")
Iterator it = map.iterator()
while (it.hasNext()) {
    println "map遍历: " + it.next()
}
map.containsKey("v1") 
map.containsValue("heihei") 
map.clear()
Set set = map.keySet(); //把 map 的key值转换为 set
使用Groovy进行JSON解析:
import groovy.json.JsonSlurper
JsonSlurper slurper = new JsonSlurper()
def jsonPara = slurper.parseText(json)
def jsonPara1 = jsonPara['id']
println(jsonPara1)
用Groovy遍历嵌套的json
import groovy.json.JsonSlurper

def json = '''{
    "upperlevel1": {
      "lowerlevel1": "ABC",
      "lowerlevel2": "DEF"
    },
    "upperlevel2": {
      "lowerlevel1": "HIJ",
      "lowerlevel2": "KLM"
    }
}'''

def slurped = new JsonSlurper().parseText(json)

slurped.each{ key, value ->
    value.each {k, v ->
        println "${v}"
    }
}

可以使用 ‘’’ 对语句进行任意换行

三目运算:
def aa = 'hello'
def bb = aa?: "hello world"
println(bb)
数据类型转换 asType:
def v1 = "1"
def v2 = v1 as int
def v3 = v1.asType(Integer)
println v2
println v3
switch case 运用:
level = 19
def score
switch (level) {
    case 1..9:
        score = 100
        break
    case 10..19:
        score = 90
        break
    case 20..29:
        score = 80
        break
    default:
        throw new IllegalArgumentException()
}
println score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值