`
tonyJ
  • 浏览: 142318 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Groovy的入门语法操作

阅读更多
1.下载groovy插件,地址:http://dist.codehaus.org/groovy/distributions/update/GroovyEclipse.zip
2、解压,把目录features和plugins 拷贝到eclipse对应的目录下。
3、eclipse中新建Groovy类HelloGroovy.groovy
/**
 * 
 */
package com.tonyj.groovy



/**
 * @author Administrator
 *
 */
public class HelloGroovy{
	
	 //public除去 默认 public
	 static void main(def args){
		//不需要的语句结束符;
		 
		//变量操作 不需要声明类型
		def var="""hello
		       world
		       groovy!"""
		println var //打印出来的格式保留换行
		println var.class//打印 class java.lang.String
		var = 1
		println var.class // 打印 class java.lang.Integer
		var = true
		println var.class //打印 class java.lang.Boolean
		
		//循环操作 支持Gstring ${i} ${val}
		def val = "testw"
		for(i in 0..2){
			println "This is ${i}:${val}"
		}
		
		//内集操作
		def collect=["a","b","c"]
		//内集添加的三种方式
		collect.add(1);
	    collect<<"come on";
	    collect[collect.size()]=100.0
	    //循环遍历打印
		collect.each{println it}
	    
	    //Collection使用类似数组下标的方式进行检索
	    println collect[collect.size()-1] //打印100
	    //groovy支持负索引
	    println collect[-1] //索引其倒数第1个元素 打印100
	    //Collection支持集合运算
	    collect=collect+5        //在集合中添加元素5
        println collect[collect.size()-1] //打印5
        collect=collect-'a'         //在集合中减去元素a(第1个)
        println collect[0]          //现在第1个元素变成b了 打印b
	    
        //map的定义
        def map=['name':'john','age':14,'sex':'boy']
	    map=map+['weight':25]       //添加john的体重
	    map.put('length',1.27)      //添加john的身高
	    map.father='Keller'         //添加john的父亲
	    //检索
	    println map['father']       //通过key作为下标索引
        println map.length          //通过key作为成员名索引
        
        // 闭包 Closure
         map.each({key,value->    //key,value两个参数用于接受每个元素的键/值
         println "$key:$value"})
         map.each{println it}     //it是一个关键字,代表map集合的每个元素
         /**
          * 打印
          * name:john
		  *	age:14
		  *	sex:boy
		  *	weight:25
		  *	length:1.27
		  * father:Keller
          * */
         map.each({ println it.getKey()+"-->"+it.getValue()})
        
         def say={word->
           println "Hi,$word!"
         }
         say('groovy') //打印Hi,groovy!
         say.call('groovy&grails')//打印Hi,groovy&grails!
         //类处理
         def person1=new Person()
         person1.name='kk'
         person1.age=20
         println person1
         
         def person2=new Person(['name':'gg','age':22]) //[]号可以省略
         println person2
         
         //可变变量的方法调用
         println sum(1)
		 println sum(1,2)
		 println sum(1,2,3)
         
         //枚举类型
         def today = Day.SATURDAY
         switch (today) {
           //Saturday or Sunday
	       case [Day.SATURDAY, Day.SUNDAY]:
	    	   println "Weekends are cool"
	       break
	       //a day between Monday and Friday
	       case Day.MONDAY..Day.FRIDAY:
	    	   println "Boring work day"
	       break
	       default:
	    	   println "Are you sure this is a valid day?"
         }
         
         // Elvis操作符
         def name
         def displayName = name ? name : "Unknown"
         //基于“不重复”的原则
         displayName = name ?: "Unknown"
         println displayName
         
         //动态性 msg是一个String,通过元类,我们为msg增加了一个String 类中所没有的方法up
         def msg = "Hello!"
		 println msg.metaClass
		 String.metaClass.up = {  delegate.toUpperCase() }
		 println msg.up()
		 
		 //通过元类,我们还可以检索对象所拥有的方法和属性(就象反射)
		 msg.metaClass.methods.each { println it.name }
         msg.metaClass.properties.each { println it.name }
         //元类判断有没有一个叫up的方法
         if (msg.metaClass.respondsTo(msg, 'up')) {
        	 println msg.toUpperCase()
         }
         //推断它有没有一个叫bytes的属性
         if (msg.metaClass.hasProperty(msg, 'bytes')) {
        	 println msg.bytes.encodeBase64()
         }
	 }
	 //可变变量
	 static int sum(int... var) {
		 def total = 0
		 for (i in var)
		 total += i
		 return total
	}
	 
}
class Person {
	 /**
	  * 不需要public修饰符
	  * 不需要类型说明
	  * 不需要getter/setter方法
	  * 不需要构造函数
	  * 不需要return
	  * 不需要()号
	  */
	 def name
	 def age
	 
	 //Groovy 默认返回方法的最后一行的值
	 String toString(){//注意方法的类型String,因为我们要覆盖的方法为String类型
	     "$name,$age"
	 }
}

/**
 *枚举类型
 * 
 */
enum Day {
	SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY
}
分享到:
评论

相关推荐

    groovy基础语法.doc

    groovy基础语法.doc,学习groovy入门级资料

    Groovy入门经典.pdf

    Groovy入门经典是一个唯一能够扩展Java平台的脚本语言,内容全面详尽,浅显易懂,易于选择性阅读。可以作为对Groovy语言感兴趣的计算机软件开发人员的参考书。需要的朋友们就赶紧来下载试试吧!  Groovy提供类似...

    Groovy基本语法.pdf

    中文版的 某个人总结的基本语法 网上搜出来的 感觉还算过得去 可当做groovy入门

    Groovy入门经典

    《Groovy入门经典》奉书内容全面详尽,浅显易懂,易于选择性阅读。可以作为对Groovy语言感兴趣的计算机软件开发人员的参考书。.., Groovy是唯一能够扩展Java平台的脚本语言。Groovy提供类似于Java的语法结构,本地化...

    groovy入门文档

    groovy入门文档,内含groovy介绍及常用语法,非常实用。

    groovy入门

    groovy初学者可以参考,Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。...

    Groovy介绍-入门

    Groovy介绍 什么是Groovy Groovy基本语法 Groovy正则 Java调用Groovy Groovy模板 Groovy应用

    groovy 开发入门

    groovy 开发入门 包括和java的比较,基本语法和进阶

    groovy入门实例代码详细(包括字符串,map,闭包等等)

    这个代码包是老师上课给我们的,感觉对于初学者来说非常实用,里面包含了基本语法,包括字符串,整数,小数,数组,闭包等待,让你快速入门

    Groovy_快速入门.doc

    groovy 基础语法介绍

    Groovy入门教程

    作为跑在JVM中的另一种语言,groovy语法与 Java 语言的语法很相似。同时,Groovy 抛弃了java烦琐的文法。同样的语句,使用groovy能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。

    Groovy经典入门

    Groovy是一门针对java的动态语言,与Java无缝集成,可以直接在Groovy中使用Java的类库,语法也非常的简单,使用方便,是Java开发者首选的动态语言。 Groovy经典入门,是一本入门级别书,适合初学者。

    Groovy学习笔记

    Groovy学习笔记,内容如下: 1.概念 2.基本语法 3.字符串 4.集合 5.类和闭包 6.控制语句 7.操作符重载 8.I/O操作 9.高级应用 10.正则表达式

    Groovy学习笔记(适合入门者)

    图文并茂,适合入门新手,涵盖了基本的语法讲解及一些DEMO测试,值得一看

    java开源包7

    同时保持蒸提供全面的支持,无缝集成的IDE(语法着色,代码导航,重构等)的语法和操作代码完全分离。最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是...

    Android Gradle解惑与实战

    本课程首先详细系统的介绍了Gradle,包括Groovy语法、Gradle入门和Gradle自定义插件等等。其中在Gradle介绍中,通过各种示例讲解Project、Task与Action等相关对象,API使用,构建生命周期等等,真正让学生在读懂代码...

    gmock:自动从code.google.compgmock导出

    Gmock只是关于测试的简单语法和可读性,因此您可以花更少的时间学习框架,而可以花更多的时间编写代码。 要使用Gmock,只需将gmock jar文件放在类路径中即可。 当前版本是gmock-0.8.3,并包含大量功能。 查看完整...

    js中的正则表达式入门(大量实例代码)

    python,js,groovy这些脚本语言都有在线调试的网站,可以在线测试是否有语法错误,用起来也很方便。 var reg = new RegExp(‘\\d{8-20}’) reg.test(“11111111a”) 这里的\\,第一个\是转义符,用于转义。 上面的...

    matlab人头检测的代码-highlightjs_custom:自定义构建hightlightjs。包括标准未提供的其他语言

    matlab人头检测的代码Highlight.js版本8.8.0 这是Highlight.js的自定义版本,其中包括对我将最常使用的语言的支持。 标准下载包括对22种最受欢迎​​的软件的支持。 Apache Bash C#C ++ CSS ...入门

Global site tag (gtag.js) - Google Analytics