Groovy开发环境搭建(适合初学者)
Groovy开发环境搭建Groovy是一种基于JVM(Java虚拟机)的敏捷动态开发语言。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。Groovy是一种动态语言,它和Java类似,都在Java虚拟机中运行。当运行Groovy脚本时它会先被编译成Java类字节码,然后通过JVM虚拟机执行这个Java字节码类。Groovy与 Java可以很好的互...
Groovy开发环境搭建
Groovy是一种基于JVM(Java虚拟机)的敏捷动态开发语言。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
Groovy是一种动态语言,它和Java类似,都在Java虚拟机中运行。当运行Groovy脚本时它会先被编译成Java类字节码,然后通过JVM虚拟机执行这个Java字节码类。
Groovy与 Java可以很好的互相调用并结合编程 ,比如在写 Groovy 的时候忘记了语法可以直接按Java的语法继续写,也可以在 Java 中调用 Groovy 脚本。比起Java,Groovy语法更加的灵活和简洁,可以用更少的代码来实现Java实现的同样功能。
Groovy 和 Java 语言对比
用 Java 编写的典型的 Hello World 示例如下所示:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("java:Hello World");
}
}
用 Groovy 编写 Hello World 程序就如下面这样简单:
Groovy 支持松散的 Java 语法,例如,不需要为打印 “Hello World!” 这样的简单操作定义类。Groovy 允许输入println,而无需输入System.out.println。
Groovy是依赖于Java的,所以首先要配置好JDK。
接着,下载Groovy,其网址:
http://groovy-lang.org/download.html
我下载的是apache-groovy-sdk-3.0.0-rc-1.zip,是压缩文件版,将其压缩文件解压到任意目录下,即可看到如下文件路径。
bin:该路径下存放了各种工具命令,常用命令groovy就放在该路径下。
lib:该目录下包含了groovy的各种工具JAR包。
licenses:groovy项目相关的各种授权文档。
等
下载完成后,解压到指定目录,
配置Groovy环境变量:将 bin 目录添加到系统环境变量(配置Groovy环境变量)。
将(跟据你的实际情况)D:\groovy-3.0.0-rc-1\bin
放入系统环境变量path
在win10配置系统环境变量
右键此电脑,属性,高级系统设置,系统属性,在“系统变量”中,找到PATH,添加,参见下图:
测试
在cmd命令行使用groovy -v,如果出现Groovy版本号说明配置成功。参见下图:
【注:若提示
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/D:/groovy-2.5.8/bin/../lib/groovy-2.5.8.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
说明groovy版本和jdk的版本不匹配,但影响不大。groovy-2.5.8和jdk11有此问题groovy-3.0和jdk11就没有此问题。】
我用的是jdk11,groovy-3.0.0-rc-1
一旦上述步骤之后,你就可以开始使用Groovy shell,有助于测试我们的Groovy,而不需要为Groovy提供一个完整的集成开发环境。可以通过在命令提示符下命令groovysh来完成,参见下图
输入groovysh 回车
输入println "Hello World!" 回车
在cmd中使用groovyconsole命令会启动自带的编辑器
输入println "Hello World!",用script ->Run 或 按下快捷键Ctrl +R运行
另外如果选择File - Save As...可以将Groovy保存为groovy文件。所以Groovy的文件后缀就是groovy。当然你也可以在命令行用groovy xxx.groovy来运行Groovy程序。
Groovy语言基础
Groovy注释标记和Java一样,使用//
Groovy语句可以不用分号结尾。
Groovy中的变量
基本类型(java中的int,float,double,byte,char,long,short)和对象类型(String等) ,最终都是对象类型。
int x = 10
println x.class //结果为:class java.lang.Integer
Groovy运算符
Groovy的运算符与Java大多相同,也有些与Java的不同点,如:
幂运算符**
assert 2 ** 3 //显示8
非运算符!
assert (!true) //显示false
Groovy支持将?:三目运算符简化为二目,如:
displayName = user.name ? user.name : 'Anonymous'
displayName = user.name ?: 'Anonymous'
Groovy定义变量
Groovy中支持动态类型,即定义变量的时候可以不指定其类型。Groovy中,变量定义可以使用关键字def。
def var=1
def str="iamaperson"
def intx=1 //也可以指定类型
Groovy变量定义有强类型定义和弱类型定义2种方式。
强类型定义是在声明一个变量的时候,同时指定变量的类型。如:
int x = 10
double y = 2.0
这种的声明后期不能更改成其他类型。这种类型是强类型。
x="good" //抛出异常(Exception thrown)
弱类型定义不需要提前指定变量的类型,可以通过def关键字告诉编译器声明变量。
def z=5
z="Hi"
使用def定义的变量能够随时改变它的类型。
对于弱类型后期可以更改成其他类型 ,开始z 是一个int 类型 后期改成了字符串类型
一般而言,如果变量只有在本模块内部使用,推荐使用弱类型定义方式,可以方便转换成其他需要的类型。如果变量用于其他模块或者其他类,推荐使用强类型定义方式,这种方式定义的变量不能动态转换为其他类型,保证了外界传入的值是正确的。
使用弱类型定义的类型是Object类型,使用强类型定义的类型是具体的某一种类型。
Groovy的字符串
Groovy中字符串分为三种,我们一个个来看。
单引号字符串,单引号字符串不会对$号进行转义,原样输出,如下:
def str1 = 'i am $i yuan'//单引号不会转义
println str1 //输出 i am $i yuan
双引号字符串,双引号字符串会对$号进行转义,如下:
def str2 = "i am $i yuan"//双引号会转义
println str2 //输出 i am 10 yuan
三引号字符串,三引号字符串支持换行,原样输出,如下:
//三个引号原样输出
def str3 = '''
public static void main(){
println "miss you"
}
'''
println str3
输出:
public static void main(){
println "miss you"
}
Groovy数据结构(容器类形)
列表
def listA=[1,2,3,4] //定义列表
println listA.min() //输出1
def listB = [1,2,3,4,5] as int[] //列表转数组
listB[2] //输出3
数组
int[] array = [1,2,3]
映射(map)
Groovy 定义 Map 的方式非常简洁,通过中括号包含key、val的形式,key和value以冒号分隔([key:value])。Groovy中的Map其实就是java.util.Map,实现类默认使用的是java.util.LinkedHashMap。
//定义映射(map)
def students = [
1 : "张三",
2 : "李四",
3 : "Jhon"
]
//索引
students[1] //此句也可替换为students.get(1),显示 张三
Ranges
简单来说Ranges就是对List的扩展,用…或者…<来定义,具体使用如下:
def Range1 = 1..10//包括10
println Range1.contains(10) //true
def Range2 = 1..<10//不包括10
println Range2.contains(10) //false
函数
函数定义时,参数的类型也可以不指定。比如
Stringfunction(arg1,args2){//无需指定参数类型}
除了变量定义可以不指定类型外,Groovy中函数的返回值也可以是无类型的。比如:
//无类型的函数定义,必须使用def关键字
def nonReturnTypeFunc(){
last_line//最后一行代码的执行结果就是本函数的返回值
}
//如果指定了函数返回类型,则可不必加def关键字来定义函数
String getString(){
return "I am a string"
}
def repeat(val){
for(i = 0; i < 5; i++){
println val
}
}
调用这个函数。
repeat("hello world")
会输出 “hello world” 五次。
groovy程序结构
包名的定义和作用及含义完全和Java一样,如:
// defining a package named com.yoursite
package com.yoursite
Imports引入
常规的imports导包操作和Java一样,如:
import groovy.xml.*
提示:Groovy与Java类似,已经帮我们默认导入了一些常用的包,所以在我们使用这些包的类时就不用再像上面那样导入了,如下是自动导入的包列表:
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常用语法及实战
https://www.cnblogs.com/yufecheng/p/11302777.html
Groovy脚本基础全攻略
https://www.jianshu.com/p/fbfaaecc19ee
精通 Groovy
https://www.ibm.com/developerworks/cn/education/java/j-groovy/j-groovy.html
更多推荐
所有评论(0)