Groovy 入门

Groovy 学习资料:
https://www.bootwiki.com/groovy/index.html
https://pan.baidu.com/s/1CKleLGL_s-VM7r17jJw3mA?pwd=om66


1.为什么Groovy比较帅?
    1)Groovy是java平台上的脚本语言,抽象程度更高。
    可以更简单快速地开发,可以编写更上的代码。
    2)与java语言无缝集成,可称为“超级java”
    使用”类java“语法,java程序员可以快速过度
    groovy与java二进制兼容,都生成字节码,所以可以与使用java语言所编写的框架和组件完美集成,并且效率安全方面比其他脚本语言要高
    groovy对象就是java对象,使用与jdk相同的API
    可以保护整个java产业在java上的巨大投资
    3)在中小型项目中可以替代java,在大型java项目中可以嵌入groovy应用

2.Groovy 的特征
    1)Groovy = java - 重复的样板代码
                    + 可选的动态类型
                    + 闭包(closures)
                    + 领域规范语言(DSL)
                    + 生成器(builders)
                    + 元编程(metaprogramming)
    2) groovy 是没有类型/修饰符/return/lterator,不需要导入集合的java.groovy 丢掉了许多java的包袱
    3)不能确定变量类型时将变量类型设为Object
    4) DSL:domain specific languages
    5) 生成器:可以生成XML/HTML/Swing树状数据结构
    6)元编程:运行时对类增加行为,类似于AOP

3.Eclipse的Groovy插件
    1)Help -> software updates -> find and install -> search for new features -> new remote site
    2)name:Groovy
      url:http://dist.codehaus.org/groovy/distributions/update/
    参考文档:http://t.csdn.cn/DsVEs

 


4.Groovy 数值
    1)Groovy的一切都是对象。可以自动装箱与拆箱
    2)整数123,-12,0都是Integer类的对象
        定义变量(使用动态类型):
        def price=100
        等同于:Integer price = new Integer(100)
        100.times{println 'Hello'} // 打印100次
        语句可以不用";"结尾
    3)浮点数据1.5,-3.14 都是BigDecimal类的对象
    4)数值类型:
        Integer 15
        Long 100L, 100l
        Float 1.23F, 4.22f
        Double 1.23D, 4.22d
        java.math.BigInteger 123G, 123G
        java.math.BigDecimal 1.23G, 1.23g, 1.23
        
    5)表达式与运算符
        1)a==b 等价 a.equals(b)
        2)Groovy的"==="就是java的"=="
        3)Groovy支持操作符重载,重载运算符对应的方法就是操作符重载
        4)"<<"操作符被重载,以支持向集合添加项
    6)基于方法的运算符
        assert 4+3==7    //4.plus(3)
        assert 4-3==1    //4.minus(3)
        assert 4*3==12    //4.multiply(12)
        assert 4%3==1    //4.mod(3)
        assert 4**3==64    //4.power(3)
        assert 4/3==1.333333    //4.div(3)
        assert 4.intdiv(3)==1    //整除
        assert !(4==3)    //!(4.equals(3))
        assert 4!=3    //!4.equals(3)
        assert !(4<3)    //4.compareTo(3)<0
        assert !(4<=3)    //4.compareTo(3)<=0
        assert 4>3    //4.compareTo(3)>0
        assert 4>=3    //4.compareTo(3)>=0
        assert 4<=>3==1    //4.compareTo(3)
        assert 4<=>8==-1    //4.compareTo(3)
        assert 4<=>4==0    //4.compareTo(3)

5.Groovy 集合概述
    1)Groovy直接在语言内使用集合
    不需要导入专门的类,也不需要初始化对象
    集合是语言本身的本地成员
    2)每个Groovy集合都是java.util.Conllection 或 java。util.Map的实例
    3)List, String, StringBuffer, Range, Map, File Matcher 都使用统一的size()方法获取长度
    
6.Groovy 正则表达式
    1)正则表达就是在Groovy中是本地语言级别的支持
    def aRegex = ~'lxt'
    println aRegex.class  //输出: class java.util.regex.Pattern
    def mat = 'lxt' = ~'lxt'
    println mat.class //输出: class java.util.regex.Matcher
    2)"~"开头的字符串是模式Pattern对象

7. Groovy 调用闭包
    1)闭包是一个可执行的代码块
    2)闭包在调用的时候才会执行
    3)闭包内默认it,it是闭包的单个隐含参数
    参数化闭包:
    def bClosure={
        println 'hello ${it}'
    }
    bClosure.call('tets')
    bClosure('tets')
    bClosure 'tets'
        
8.Groovy类分析
    1)类/方法默认是public修饰符
    2)默认情况下Groovy编译的类属性是私有的
    3)变量与方法使用动态类型
    4)Groovy自动提供构造函数,构造函数接受一个名称-值对的映射,名称-值对与类的属性相对应。不用初始化对象的每个属性
    5)生成标准的setter和getter方法
    6)可以通过"."语法间接地访问属性
    7)在进行属性操纵时总是会调用setter和getter方法,即使直接通过"."语法访问属性也是如此
    8)在java中这样只会输出所有对象的默认toString()实现,包类名@hashcode
    9)覆盖默认的toString()实现,让输出效果更好
    
9.GroovySQl概述
    1)GSQL结合利用闭包和迭代器,把资源管理的复旦转移到Groovy框架本身,从而简化HDBC编程
    2)不用关闭Connection,也不用关闭ResultSet
    3)Groovy把迭代机器变成隐含的,使用起来更简单
    
    建立数据链接
    1)import groovy.sql.*
     def db = 'jdbc:mysql://主机/数据数据库?userUnicode=true&characterEncoding=UTF-8'
     def user = 'root' //账户名
     def password = '123456' // 用户密码
     def driver = 'com.mysql.jdbc.Driver' //驱动
     def sql = Sql.newInstance(db,user,password,driver)
     //需要把mysql的驱动jar包拷贝至项目lib目录下
     
     数据库的CRUD
     sql.execute("delete from toys")
     def searchToyName = 'toy1'
     sql.eachRow("select * from toys where toyName=?",[searchToyName]){
      toy-> println '\t\t'+ toy.toyName+ ':' + toy.unitPrice
     }
     
     操作DataSet
     1) DataSet类是sql类的子类(可用Jad查看)
     def toys = sql.dataSet('toys') //dataSet()参数是表名
     toys.add(toyName:'toy2',unitPrice:'100')
     toys.each{toy->
        println '\t\t'+ toy.toyName+ ':' + toy.unitPrice
     }
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值