初见Groovy

创建groovy类

class GroovyBeans{
    private String name;

    GroovyBeans(String theName){
        name = theName;
    }
}
  • groovy类自动生成getter,setter方法
  • class默认访问修饰符为public

使用groovy类

def bean = new GroovyBeans("hello")
bean.name = "change hellow" //相当于setName
println bean.name //相当于System.out.println(bean.getName());
  • bean.title不是类属性的直接访问,它是访问该属性访问者方法的快捷方式
  • def是groovy中用来定义动态变量的关键字,故new后类均不用强制转化。

字符串处理

 def name = 'hello'
 println "$name world"
  • $name将被替换为hello
  • groovy中可用单引号表示字符串
  • -

数字处理

def x = 1
println x.plus(2)
  • 一切groovy变量都是类

集合处理

  • List
def mylist = [1,2,3,4,5]
println mylist[0]  //类数组访问形式
mylist[6] = 6  //数组扩展
/*
[]将被解析成ArrayList
*/
  • Map
def myMap = [1:'n1',3:'n3']
println myMap[1] 
  • Range
def myRange = 1..10
assert myRange.size() == 10
assert myRange.from == 1
assert myRange[0] == 1
assert myRange.contains(1) == true //assert断言,经常出现在groovy中,用于单元测试

闭包

[1,2,3].each {num -> println num}
  • 闭包即{}中的代码块,相当于java中的匿名类,也就是Lambda expression,面向函数语言用法

循环

 for (i in 0..9)
 {
 //代码块
 }
 list.each{/*闭包/}
  • 常用以上两种
  • groovy无 for(int i;i<10;i++) 类型循环语句

java环境中运行groovy

加载的两种方式:

  1. 使用groovyc编译所有的.groovy为java的.class文件,把这些 *.class文件放在java类路径中,通过java类加载器来加载这些类。
  2. 通过groovy的类加载器在运行时直接加载.groovy文件并且生成对象,在 这种方式下,没有生成任何.class,但是生成了一个java.lang.Class对象的实例,也就是说,当groovy代码中包括一个new MyClass()的表达式时,并且也有一个MyClass.groovy的文件,这个文件将被解释,一个MyClass的类型将被产生并且增加到类加载器中,在代码中将像从*.class一样获取到MyClass对象.
  • java虚拟机并不考虑代码表层是怎么样的,只要字节码符合Class结构即可被JVM识别运行。

Groovy的动态特性

println evaluate('1+1')
  • 运行时生成类
  • 根据代码的任意字符串来运行的能力是脚本语言的显著特征
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值