Groovy基本使用(2):基本语法
程序员文章站
2022-07-12 15:11:03
...
Groovy 基本语法
Groovy 是一种动态类型的 JVM 敏捷开发语言,基本的语法和 Java 十分相似,很多关键字直接使用 Java 的关键字,如:import 导入类,//、/**/ 标记注释,使用和 Java 类似运算符 等等;
一个基本的示例
Helloworld.groovy
class HelloWorld {
static void main(String[] args){
println('Hello world ,Welcome to Groovy!');
}
}
当然 groovy 可以直接以脚本的形式编写,如下:
test.groovy
def name = 'assad';
println "Hello ${name}";
println 'Welcome to groovy';
运行时候直接在控制台定位到 test.groovy 目录下,以如下方式启动 groovy 脚本
groovy test.groovy
导入类
groovy 使用 import 关键字导入类,其默认预先导入的类如下:
import java.lang.*
import java.util.*
import java.io.*
import java.net.*
import groovy.lang.*
import groovy.util.*
import java.math.BigInteger
import java.math.BigDecimal
数据类型
Groovy 内置以下的数据类型:
byte、short 、int、long、float、double、char、Boolean、String
分别对应 Java 中的数据类型,同时还支持 Java 的基本类型的包装类型,以及高精度计算类型 java.math.BigInteger,java.math.BigDecimal;
变量
Groovy 中声明变量的方式有2种,使用显式声明变量类型,或者使用 def 关键字声明动态类型;
String str = 'are you ok';
int num = 12;
def str2 = 'are you ok?';
def num2 = 14;
println("str="+str+"num="+num+"str2="+str2+"num2="+num2);
运算符
Groovy 对以下运算符的支持同 Java :
-
算术运算符:+ - * / % ++ --
-
关系运算符:== >= <= > <
-
逻辑运算符:&& || !
-
位运算符:& | ^ ~
- 赋值运算符:+= -= *= /= (%)=
同时 Groovy 还支持范围运算符
范围是指定值序列的速记,范围由序列中的第一个和最后一个值表示,Range可以是包含或排除。包含范围包括从第一个到最后一个的所有值,而独占范围包括除最后一个之外的所有值,可以把范围对象看成一个有序元素主程的列表:
1..10 - 包含范围的示例
1 .. <10 - 独占范围的示例
'a'..'x' - 范围也可以由字符组成
10..1 - 范围也可以按降序排列
'x'..'a' - 范围也可以由字符组成并按降序排列。
这些范围运算符主要用在定义一个有序序列(可以用在循环控制等地方),如下示例:
String str = 'are you ok';
int num = 12;
def str2 = 'are you ok?';
def num2 = 14;
println("str="+str+"num="+num+"str2="+str2+"num2="+num2);
这些范围运算符产生的对象支持以下方法:
contains() | 检查范围是否包含特定值 |
get() | 返回此范围中指定位置处的元素 |
getFrom() | 获得此范围的下限值 |
getTo() | 获得此范围的上限值 |
isReverse() | 判断该范围是否是一个反向的范围 |
size() | 返回此范围的元素数 |
subList() | 返回此指定的fromIndex(包括)和toIndex(排除)之间的此范围部分的视图 |
控制流
Groovy 的判断语句语法 if,if else,switch ,循环语句 while,for,for-in,循环控制语句 break,continue 语法同 Java 中的一致;
其中 for-in 可以搭配范围类型使用,代替列表循环传统的for结构;
列表 List
Groovy 中,List保存了一系列对象的引用,类似 Java,使用整数作为索引;
使用 [ ] 来表示列表,有以下这些表示:
[11,12,13,14] - 整数值列表
['Angular','Groovy','Java'] - 字符串列表
[1,2,[3,4],5] - 嵌套列表
['Groovy',21,2.11] - 异构的对象引用列表
[] - 一个空列表
基本的使用如下:
def list = [1,2,3,4,5];
println(list); //output:[1, 2, 3, 4, 5]
println(list.get(1));
list.add(6);
list.set(3,7)
列表对象支持的方法如下:
add() | 将新值附加到此列表的末尾 |
get() | 返回此列表中指定位置的元素 |
set() | 设置列表中指定位置的元素值 |
contains() | 如果此列表包含指定的值,则返回true |
isEmpty() | 如果此列表不包含元素,则返回true |
remove() | 删除此列表中指定位置的元素 |
pop() | 从此列表中删除最后一个项目 |
reverse() | 创建与原始列表的元素相反的新列表 |
size() | 获取此列表中的元素数 |
sort() | 返回原始列表的排序副本(升序) |
映射 Map
映射(关联数组)是对象引用的无序集合。Map集合中的元素由键值访问。 Map中使用的键可以是任何类,同样使用 [ ] 表示映射,一些表示如下:
['TopicName':'Lists','TopicName':'Maps'] - 具有TopicName作为键的键值对的集合及其相应的值。
[:] - 空映射
支持的常用方法如下:
containsKey() | 判断此Map是否包含指定key |
get() | 查找此Map中的 key 并返回相应的 value。如果此映射中没有键的条目,则返回null |
keySet() | 获取此Map中的所有Key组成的Set |
put() | 将指定的 Value 与此 Map 中的指定 Key 相关联。如果此映射先前包含此键的映射,则旧值将替换为指定的值 |
size() | 返回此Map 中的 key-value 映射的数量 |
values() | 获取此Map中的所有 value 组成的Set |
字符串
Groovy 对于字符串的引用,可以使用 "string",'string',"""string""" 这3中方式;
“”和 ' ' 的区别类似于 PHP,' ' 用于引用纯字面量的字符串," " 除了可以引用纯字面量的的字符串外,还可以引用模板引擎,一个简单的示例如下:
def str1 = "Hello!";
def str2 = "${str1} welcome to groovy!" ;
println(str1); //output: Hello!
println(str2); //output: Hello! welcome to groovy!
""" 可以用于引用跨行的字面量:
def str = """are you ok,
my friend ?
welcome to groovy!""";
Groovy 对于字符串变量可以才采用类似C++的方式,进行字符串索引,同时对于索引值支持 range 范围类型,如下:
def str1 = "Are you ok?";
def ch = str1[0]; //ch = "A";
def ch2 = str1[2]; //ch2 = "e";
def subStr = str1[0..2]; //subStr = "Are"
Groovy 字符串的方法基本类似于Java String类的方法;
Groovy 字符串提供了 ==~ 运算符用于正则表达式的匹配,示例的用法如下:
def regix = '.*oo.*'; //正则表达式字符串
def str = 'groovy' //待匹配的字符串
Boolean result = str ==~ regix; //result = true;
方法
Groovy 的方法声明和调用基本类似于 Java,不过 Groovy 方法返回类型可以设置为 def,参数类型可以不用声明,修饰符不声明默认为public ;
int sum(int num1,int num2 ){ //groovy完全支持Java一样的方法声明
return num1 + num2;
}
def sum(num1,num2){ //动态类型的声明
return num1 + num2;
}
groovy 方法还支持默认参数
def sum(num1 = 1,num2 = 2){
return num1 + num2;
}
static main(String[] args){
println(sum(4,4)); //output: 8
println(sum()); //output: 3
}
对象
groovy 对于对象的语法同 Java 基本一致,同样使用 class 关键字标记类,使用 interface 标记接口,使用 implements 标记继承接口,使用 extends 标记继承类,使用 abstract 标记抽象类;
不过有一点不同,groovy 默认的修饰符为 public 即全公开,非 Java 的包内公开;
groovy 对于泛型支持的语法也和 Java 中的一样;
异常处理
groovy 支持和 Java 一样的异常处理语法:try,catch,finally,支持 Java 中的 Throwable 异常类;
上一篇: 【JS】将数组转换成字符串
下一篇: 修改json内容