groovy 语言学习

写在前面

本文更偏向于有一定java基础的人学习,主要区分groovy 语言和java的区别。

当然,没有java基础您也可以学习groovy,请跳转 :Groovy 零基础入门

如果不想配置Groovy环境:Groovy在线编程

1、配置Groovy环境

下载地址:https://groovy.apache.org/download.html
下载完直接安装。

安装完成,在cmd中输入:groovysh 以验证是否安装成功。

2、基本语法

Groovy 是一种基于 Java 平台的面向对象语言。在Groovy中,所有java代码都支持

2.1、类、方法、变量

// 注释和java中一样

// def 定义任何类型变量
def ex = new Example();

// 行尾分号可不写
println(ex.mul(3))

// 方法调用括号可不写
println ex.mul(4)

// 默认类和方法是pulic,字段是private
class Example {
	int n = 2
	
	def mul(x) {
    	return x*n
	}
}

用$符号插入变量

def name = '小明'                             // 单引号,里面只能是字符串
def age = 20
def xiaoming = "我叫$name,今年 $age 岁"     // 双引号,可以有$
println xiaoming                            // 输出内容:我叫小明,今年20岁

类中字段赋值

class Example {
   static void main(String[] args) {
      def st = new Student(name: 'John',ID:1);
   } 
}
 
class Student {
   String name
   int ID; 
}

2.2、list、map、Range、闭包

def list = ['USA', 'UK', 'FRANCE', 'INDIA']
list[0] = 'USA1'
println list.get(0)

def map = ['key':'value']
println map.get('key')

// Range类型
def range = 1..5      // 相当于1、2、3、4、5
def range1 = 5..<8    // 相当于5、6、7

// 闭包相当于封装一个代码块
def ab = { a,b -> println a+b } 
ab(2,3)                                // 打印 5
def xxx = { println '你好' } 
xxx()                                  // 打印 你好
def xxx1 = { String s -> println s } 
xxx1('你好')                           // 打印 你好

2.3、循环

// 第一种循环
	def list = [1,2,3,4,5]
	list.each {
	      println it
	}

// 第二种循环
    for  ( i  in  0..2 ) {
        println("hello Groovy")
     }
     
// 第三种循环
   3.times {
        println("hello Groovy")
    }

// 第四种循环
   0.upto(2) {
        println("hello Groovy")
    }

// 除此之外,java的while也支持

2.4、正则

def reg1 =~ 'he*llo'
def reg2 = /he*llo/
println "类型是: ${reg1.class}"          // 类型是: java.util.regex.Pattern
println "类型是: ${reg2.class}"          // 类型是: java.lang.String
println "hello".matches(reg1)            // true
println "hello".matches(reg2)            // true

=~ 可以得到 java.util.regex.Matcher
==~ 可以得到布尔类型

def val1 = "hello" =~ "he*llo"
println val1.class                        // java.util.regex.Matcher
print val1.matches()                      // true

def val2 = "hello" ==~ "he*llo"
print val2                                // true

2.5、main方法

在类中程序从main方法开始执行,没有类就直接从上而下执行

class Example {
   static void main(String[] args) {
      Student st = new Student();
      st.StudentID = 1;
      st.Marks1 = 10;
      println(st.DisplayMarks());
   } 
} 

interface Marks { 
   void DisplayMarks(); 
} 

class Student implements Marks {
   int StudentID
   int Marks1;
	
   void DisplayMarks() {
      println(Marks1);
   }
}

2.6、Traits 特征

可以使用 implement 关键字以与接口类似的方式实现特征。

class Example {
   static void main(String[] args) {
      Student st = new Student();
      st.StudentID = 1;
      st.Marks1 = 10; 
      println(st.DisplayMarks());
   } 
} 

trait Marks { 
   void DisplayMarks() {
      println("Display Marks");
   } 
} 

class Student implements Marks { 
   int StudentID
   int Marks1;
}

3、xml文件读取

示例xml: 1.xml

<collection shelf = "New Arrivals"> 
   <movie title = "Enemy Behind"> 
      <type>War, Thriller</type> 
      <format>DVD</format> 
      <year>2003</year> 
      <rating>PG</rating> 
      <stars>10</stars> 
      <description>Talk about a US-Japan war</description> 
   </movie> 
	
   <movie title = "Transformers"> 
      <type>Anime, Science Fiction</type>
      <format>DVD</format> 
      <year>1989</year> 
      <rating>R</rating> 
      <stars>8</stars> 
      <description>A schientific fiction</description> 
   </movie>
</collection> 

读取1.xml

import groovy.xml.MarkupBuilder 
import groovy.util.*

class Example {

   static void main(String[] args) { 
	
      def parser = new XmlParser()
      def doc = parser.parse("D:\\1.xml");
		
      doc.movie.each{ bk->
         print("Movie Name:")
         println "${bk['@title']}"
			
         print("Movie Type:")
         println "${bk.type[0].text()}"
			
         print("Movie Format:")
         println "${bk.format[0].text()}"
			
         print("Movie year:")
         println "${bk.year[0].text()}"
			
         print("Movie rating:")
         println "${bk.rating[0].text()}"
			
         print("Movie stars:")
         println "${bk.stars[0].text()}"
			
         print("Movie description:")
         println "${bk.description[0].text()}"
         println("*******************************")
      }
   }
} 

4、Json

import groovy.json.JsonOutput

class Example {
   static void main(String[] args) {
      def output = JsonOutput.toJson([ new Student(name: 'John',ID:1),
         new Student(name: 'Mark',ID:2)])
      println(output);  
   } 
}
 
class Student {
   String name
   int ID; 
}


// 输出结果:[{"name":"John","ID":1},{"name":"Mark","ID":2}]
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值