Groovy语言语法基础

Groovy 语言学习

个人Groovy目前学习所用主要是用于编写gradle插件。
groovy语言是兼容Java语言的,我们可以使用写java的方式写Groovy,当然也可以使用Groovy本身的一些语法去写也许。Groovy是没有类型的java。
来源Groovy入门教程

Groovy安装

下载GDKGDK,配置安装环境,也就是环境变量,跟java的类型(AS直接运行貌似可以不用),然后在Android Studio中开发Groovy,第一次运行的时候需要配置lib的路径,根据提示选择到groovy的安装目录下面的lib目录设置进去。这样子就可以了。

Groovy基本规则

  • 作为动态语言,Groovy中所有的变量都是对象,在声明一个变量时,不强制声明类型,只是需要在变量前使用def关键字。
  • 属性默认都是private的,默认提供get和set方法,类默认都是public的。
  • 语句结束的时候不需要”;”表示语句结束
  • 文件名以.groovy结尾
  • 注释,他的注释与java一样,支持
只能在第一行的注释:#!
单行注释://
多行注释:/**/
文档注释,也就是编译到doc里面的:/** */
  • 变量命名
    以字母,美元符号$,或者是下划线_开始,不能以字符串开始
  • Groovy的保留字

as
assert
break
case
catch
class
const
continue
def
default
do
else
enum
extends
false
finally
for
goto
if
implements
import
in
instanceof
interface
new
null
package
return
super
switch
this
throw
throws
trait
true
try
* Groovy的自动导入的包包括:

groovy.lang.*
groovy.util.*
java.lang.*
java.util.*
java.net.*
java.io.*
java.math.BigInteger
java.math.BigDecimal

使用到这些包的时候我们就不用去import了

Groovy语法基础

HelloGroovy程序:

我们首先在AS里面新建一个JAVA 程序或者是建立一个Android lib或者是app module,随便都行。然后新建一个名字随便的.groovy文件。比如mygroovy.groovy文件,文件的位置是位于src/main/java目录下面。
然后按照JAVA的写法输出HelloGroovy是:在mygroovy.groovy新建一个类,类的名字是随便,例子如下:

package com.example
public class HelloGroovy{
    public static void main(String[] args) {
        System.out.println("Hello Groovy")

    }
}

然后对着代码右键,选择run,然后假如是第一次需要配置Groovy的jar进来。就选择你下载的Groov目录下面的lib目录配置进去,再次运行,就可以输出:

Hello Groovy

这里的输出还是调用java的输出流实现的。
其他写法:
不需要类,不需要main方法,直接是:

package com.example
System.out.println("Hello Groovy")

右键,run,还是输出Hello Groovy。这里的输出还是使用JAVA语言的输出流实现的。
最简单的写法,直接:

package com.example
print("Hello Groovy")
print "Hello Groovy"

同样会都输出Hello Groovy,这里就是使用Groovy语言实现的。

定义变量

我们可以使用java的强语言类型,使用各种不同的类型去定义变量,在这里不分享。Groovy还可以通过关键字def定义变量,他会根据上下文去推断这个变量的类型,需要强调一点,Groovy里面def声明一切都是对象。比如:

package com.example
def a=10
def b=10L
def c="Hello Groovy"
def d=1.0
def e=1.0f
println(a.class)
println(b.class)
println(c.class)
println(d.class)
println(e.class)

输出:

class java.lang.Integer
class java.lang.Long
class java.lang.String
class java.math.BigDecimal
class java.lang.Float

同时,在给一个变量赋值之后,也就是给定了类型之后,该变量还是可以指向别的类型的,比如:

package com.example
def a=10;
println(a.class)
a = "Hello Groovy"
println(a.class)

输出就是:

a=10;
println(a.class)
a = "Hello Groovy"
println(a.class)

但是,你以为就一定是需要def关键字吗,个人在AS里面测试运行的时候发现,我们可以把关键字def都省略掉,直接使用一个变量名字就可以,这就是动态语言的强大。变量堆指向的类型不关心,只要你给他什么类型,他就可以是什么类型。上面的例子是可以写成:

package com.example
a=10;
println(a.class)
a = "Hello Groovy"
println(a.class)

这样子也是ok的。

类型兼容问题

看下面一个例子:

package com.example

char c = 'a'
println c.class
c='b'
println c.class
c2='a'
c3="a"
println c2.class
println c3.class

首先我们使用java的char关键字声明一个char 类型的变量c,然后打印类型,再次改变内容,再次打印类型,然后声明c2和c3,打印类型:输出结果是:

class java.lang.Character
class java.lang.Character
class java.lang.String
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值