Groovy语法介绍

2年前 (2022) 程序员胖胖胖虎阿
174 0 0

1、介绍

Groovy自2003年起出现在Java领域。凭借十多年的历史、发展和经验,它是一种Java语法兼容的面向对象编程语言,可编译为JVM字节码。在某种程度上,Groovy可以被视为Java的一种脚本化改良版。这是因为它运行在虽然运行在JVM上,由于它的工作方式,它可以很好地与Java代码及其相关库进行互操作。大多数有效的Java代码也可以转换为有效的Groovy代码。

Groovy被设计为既是编程语言又是脚本语言。这意味着与需要编译的Java不同,Groovy可以结合各类语法糖的使用,减少了编码过程中大量工作。

Groovy和Java代码的最大区别在于Groovy更灵活,语法要求更少,因此吸引了许多Java使用者。这意味着许多进入Groovy的Java开发人员会发现学习它的过程非常简单。因为从根本上说,大多数基于面向对象的编程语言都倾向于遵循相同的语法。这种共享的意识形态使开发人员可以轻松地在Java和Groovy之间切换,或者可以混用Java和Groovy。

2、groovy注释

groovy的注释有两种(与Java相同)

// 单行注释

/**/ 多行注释

3、groovy语句输出

方式一(java版本)

class HelloGroovy {
    static void main(args) {
        System.out.println("Hello world")
    }

方式二(groovy)

println "hello world"

注意:groovy语法中不需要使用分号进行结尾

4、定义变量

方式一

像Java一样使用数据类型直接声明

int x = 10
String s = "张三"

方式二

使用def关键字声明变量,groovy会更加你传入的数据,自动推断变量类型

def x = 3
def name = "张三"

5、单引号、双引号与三引号的区别

5.1、单引号

常用来定义字符串,与java中的双引号一样 “\”为转义字符

def name = '测\'试代码'

5.2、双引号

功能与单引号相同,除此之外它还可以借助${变量名}进行动态的设置字符串参数

def testName = "call me"
def text = "Hello : ${testName}"

println testName.class // class java.lang.String
println text.class  // class org.codehaus.groovy.runtime.GStringImpl

注意:第一行代码的数据类型为Java中的String数据类型,但是第二代码中的数据类型则是groovy中特有的GString数据类型,GString 与 java中的String可以相互传递,相互转换的。

${}表达式可扩展任意表达式

5.3、三引号 

基本功能与单引号相同,除此之外,如果我们想定义多行的字符串时,想要保留它的格式时,我们就可以使用三引号来完成

def mail = '''\
abc
efg
'''
println(mail)

注:groovy使用打印方法,可以使用括号将对象进行包裹,也可以不使用小括号,使用空格分隔对象,也能实现打印方法,二者功能完全相同。

6、字符串的常用处理方法

6.1、center(中心填充)

这是字符串的填充方法,参数1是将字符串填充为多少个,参数2是填充时,填充所用的对象。它有两个构造方法,一个参数构造方法,指定将字符串添加成多少个使用空格进行填充(指定的个数小于字符串的长度时不会进行填充)

def str = "groovy hello"
println str.center(15, "p")

6.2、padLeft(左填充)

def str = "groovy"
println str.padLeft(8,"0")

6.3、padRight(右填充)

def str = "groovy"
println str.padRight(8,"0")

6.4、字符串的比较

def str2 = "hello"
println str > str2   // 比较的是Unicode编码,还可以使用compareTo方法进行字符串的比较

6.5、获取字符串的值

def str = "groovy hello"
str[0] // 根据索引获取字符串的值,
str.getAt(4) // java方式
str[1..4] // 传入范围,来获取字符串

6.6、字符串相减(minus方法)

字符串的减法,减去的是str中包含str的元素,此方法还可以用运算符 " - " 代替

str = "ABC999"
STR2 = "aBC999"
str.minus(str2)  // 结果为aBC

6.7、将字符串倒序输出(reverse方法)

str.reverse() // 将字符串倒序输出

6.7、将字符串首字母大写(capitalize方法)

str.capitalize() // 将字符串首字母大写

6.8、判断字符串是否是数字类型(isNumber方法)

str.isNumber() // 判断字符串是否是数字类型

6.8、将字符串转换为其他类型(类似于java中各种数据类型的相互转换)

str3 = "8"
println str3.toInteger() // 将字符串转换为其他类型

注:Groovy还有许多的字符串操作方法,这里只是列举了少部分常用的,具体的详见GroovyAPI文档

 

7、条件语句与循环语句

Groovy中 if条件语句、for和while循环语句与Java相同,这里主要介绍switch..case和for循环语句的增强型用法,以及Groovy对其的改造。

7.1、switch..case 

groovy中的Switch..case 可以是任意的数据类型(比Java中的switch..case强大得多)

def x = 1.2345
def result
switch (x) { // groovy中的Switch..case 可以是任意的数据类型
    case 'foo':
        result = 'find foo'
        break
    case 'bar':
        result = 'find bar'
        break
    case [4, 5, 6, 'inlist']: // 列表
        result = 'list'
        break
    case 1..44:
        result = 'range' // 范围
        break
    case Integer:
        result = 'integer'
        break
    case BigDecimal:
        result = 'decimal'
        break
    default: result = 'default'
}

7.2、for循环语句对范围进行循环

/*
* 对范围进行循环
*/
def sum = 0
for (i in 0..9) {
    sum += i
}

7.3、for循环语句对List进行循环

/* 对list进行循环 */
sum = 0
for (i in [1, 2, 3, 4, 2, 3, 1, 0]) {
    sum += i
}

7.4、for循环语句对Map集合进行循环

/*
    对map集合进行循环
*/
for (i in ["张三": 23, "lucy": 19, "Bob": 30]) {
    sum += i.value
}
版权声明:程序员胖胖胖虎阿 发表于 2022年11月9日 上午12:08。
转载请注明:Groovy语法介绍 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...