Groovy基本语法使用

发布时间:2023年12月29日

Groovy语法

1 变量类型

? 在Groovy中,没有基本数据类型,只有对象类型,表面上我们定义基本的数据类型,但是实际上会进行装箱处理,通过下面的例子查看。

package com.dream21th

int a = 20
println(a.class) // class java.lang.Integer

float b = 4.5
println(b.class) // class java.lang.Float

double c =8.8
println(c.class) // class java.lang.Double

boolean d =false
println(d.class) //class java.lang.Boolean

? 通过上面代码的运行结果,可以看出我们在定义的基本的数据类型的时候会被转换为对象类型,这种转换对写代码没有影响。

2 变量的定义
2.1 强类型定义

? 强类型定义指的是在定义参数的时候,在前面加上数据的具体类型。比如参数a,它的类型是int,那么定义如下:

//参数前面加上了int这个具体的数据类型,这种就是强类型定义
int a = 20
println(a.class) // class java.lang.Integer
2.2 弱类型定义

? 参数除了强类型定义的方式外,还可以采用弱类型的定义的方式,也就是不指定参数的具体的数据类型,而是采用def作为参数类型,编译器会根据参数的值自动推导参数类型。

def e = 19
println(e.class) //class java.lang.Integer

def f = 19.8
println(f.class) //class java.math.BigDecimal

def g = "19"
println(g.class) //class java.lang.String

? 通过上述代码的运行可以看出,采用def定义数据类型,编译器会根据数据的具体值推到出数据的真实类型。

3 字符串
3.1 字符串的常用定义方式

? 字符串的常用定义方式有:单引号,双引号,三引号。

//单引号定义
def str = 'hello world \n hello groovy'
println(str)
println(str.class)

//双引号定义
def str1 = "hello world \n hello groovy"
println(str1)
println(str1.class)

//三引号定义
def str2 = '''hello world \n hello groovy'''
println(str2)
println(str2.class)

//三引号定义可以跨行定义
def str3= '''hello world 
 hello groovy'''
println(str3)
println(str3.class)

//双引号可以通过${参数}复制,也可以进行计算
def name = "zhang san"
def str4 = "hello ${name},10+10=${10+10}"
println(str4)
3.2 字符串的常用方法

? java.lang.String中可以直接使用的方法。

def str1 = "hello groovy"
println("str的长度:"+str1.length())   //str的长度:12
println("str是否为空:"+str1.isEmpty()) //str是否为空:false
println("str的下标为4的元素:"+str1.charAt(4))//str的下标为4的元素:o

def str2 = "hello groovy"
println("str1和str2是否相等:"+str1.equals(str2)) //str1和str2是否相等:true
println("str2从下标为2的位置开始截取:"+str2.substring(2)) //str2从下标为2的位置开始截取:llo groovy
println("str2从下标为2截取到4的位置:"+str2.substring(2,4))//str2从下标为2截取到4的位置:ll
println("str2将l替换为L:"+str2.replace("l","L"))//str2将l替换为L:heLLo groovy
println("str2转换为大写:"+str2.toUpperCase())//str2转换为大写:HELLO GROOVY
println("str2通过o分割:"+str2.split("o"))//str2通过o分割:[hell,  gr, , vy]

def str3 = "heLLo groovy"
println("str3转换为小写:"+str3.toLowerCase())//str3转换为小写:hello groovy


def str4 = "  heLLo groovy "
println("去掉str4首尾空格:"+str4.trim())//去掉str4首尾空格:heLLo groovy

? org.codehaus.groovy.runtime.StringGroovyMethods中可以使用的一些方法。

//org.codehaus.groovy.runtime.StringGroovyMethods

def str1 = "hello groovy"
println("str1为中心两边填充空格保证长度为20:"+str1.center(20))//str1为中心两边填充空格保证长度为20:    hello groovy
println("str1为中心两边填充*保证长度为20:"+str1.center(20,"*"))//str1为中心两边填充*保证长度为20:****hello groovy****
println("str1左边填充*保证长度为20:"+str1.padLeft(20,"*"))//str1左边填充*保证长度为20:********hello groovy

def str2="groovy"
println("str1减去str2,去掉重复:"+str1.minus(str2)) //str1减去str2,去掉重复:hello
println("str2减去str1,str2不包含str1,所以该操作还是str2的值:"+str2.minus(str1))//str2减去str1,去掉重复:groovy


def str3 = "hello groovy"
println("str3首字母大写:"+str3.capitalize()) // str3首字母大写:Hello groovy
println("str3反转:"+str3.reverse()) // str3反转:yvoorg olleh

def str4="4.5"
println("str4转换为double:"+str4.toDouble().class) //str4转换为double:class java.lang.Double

? Groovy新增的操作符

def str5= "c"
def str6= "b"
println("str5是否大于str6:"+(str5>str6)) //str5是否大于str6:true

def str7 = "hello groovy"
println("str7下标为1的值:"+str7[1])//str7下标为1的值:e
println("str7下标2到3的值:"+str7[2..3])//str7下标2到3的值:ll

def str8="hello groovy"
def str9="groovy"

println("str8-str9:"+(str8-str9))//str8-str9:hello 
println("str9-str8:"+(str9-str8))//str9-str8:groovy
println("str8+str9:"+(str8+str9))//str8+str9:hello groovygroovy
4 流程控制
4.1 if-else结构

? 在Groovy中使用if-else和在java中使用方式是一样的。

def flag=true
if (flag){
    println("满足条件")
}else {
    println("不满足条件")
}

def score=99

if(score<60){
    println("不及格")
}else if(score>=60 && score<80){
    println("良好")
}else {
    println("优秀")
}

4.2 while结构

? 在Groovy中使用while和在java中使用方式是一样的。

def num=10;

while (num>0){
    println("数字现在是:"+num)
    num--;
}
4.3 for结构

? 在Groovy中使用for有下面几种使用方式。

//普通的便利方式
for(def i=0;i<=10;i++){
    println(i)
}

//输出10到30两边包含
for(i in 10..30){
    println(i)
}

//遍历列表
for(i in [1,2,3,4,5]){
    println(i)
}

def map1=[
        "a":"A",
        "b":"B",
        "c":"C"
]

//便利map类型
for(i in map1){
    println(i.key+"  "+i.value)
}
4.4 switch结构

? switch的使用方式非常灵活,下面是一个例子,可以满足值,范围,列表和类型的匹配。如果不想触发多条规则,在相应代码后面增加break

def c=10

switch (c){
    case "abc":
        println("满足第一个条件")
    case [8,9,10,11]://在列表中
        println("满足第二个条件")
    case 8..20://范围中
        println("满足第三个条件")
    case Integer://整形
        println("满足第四个条件")
    case BigDecimal://浮点型
        println("满足第五个条件")
    default://默认
        println("满足第六个条件")
}

控制台输出:
满足第二个条件
满足第三个条件
满足第四个条件
满足第五个条件
满足第六个条件
文章来源:https://blog.csdn.net/qq_36305027/article/details/135282691
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。