美文网首页Android开发Android技术知识Android开发经验谈
Groovy快速学习(1) - 数据类型与逻辑控制

Groovy快速学习(1) - 数据类型与逻辑控制

作者: 丶麦芽 | 来源:发表于2018-06-06 22:26 被阅读33次

    概述

    • 一种基于JVM的敏捷开发语言
    • 结合了Python、Ruby、Smalltalk的许多强大的特性
    • groovy可以与java完美结合,而且可以使用java所有的库
    • 语法上支持动态类型、闭包等新一代语言特性
    • 即可以面向对象编程、又可以面向过程编程(脚本)

    数据类型

    • 可以使用java中的基本类型和对象类型,其中基本类型会被自动装包为对象类型(int -> Integer)
    • 也可以使用动态类型def 关键字声明
    def a = 1
    println a.class
    def b = 1.3
    println b.class
    def c = "hello"
    println c.class
    
    //输出
    class java.lang.Integer
    class java.math.BigDecimal(大数据类型)
    class java.lang.String
    

    强类型和动态类型选择:如果该变量只是自己用,则推荐使用动态类型,如果该类型需要外部模块调用、传递,则推荐使用强类型。

    字符串类型

    Groovy中可以使用String类型,同时增加了GString类型,GString相对于String增加了许多API和操作符,并且两种类型可以相互传递相互调用。

    定义

    • 使用单引号定义
    //本质类型就是 java.lang.String,相加后得到的仍然是java.lang.String类型
    def name = 'Hello Groovy!'
    
    • 使用三个单引号定义
    //可以在里面换行,而单引号换行需要用+进行拼接;可以在里面使用单引号和双引号,而单引号中需要转义
    def name = '''Hello Groovy!'''
    
    • 使用双引号定义
    //使用双引号被称为可扩展字符串,扩展之前的真实类型是String,扩展后的真实的类型是GString,相加后得到的仍然是java.lang.String类型
    def a = "Groovy"
    def b = "Hello ${a}"
    println a.class
    println b
    println b.class
    
    //输出
    class java.lang.String
    Hello Groovy
    class org.codehaus.groovy.runtime.GStringImpl
    

    方法

    Groovy中String的方法来源共三个地方,分别是java.lang.String、DefaultGroovyMethods、StringGroovyMethods三个地方,其中StringGroovyMethods中又可以分为基本参数类型和闭包类型两种。

    • center:扩充字符串的长度,并进行填充,center是从两侧填充,padLeft、padRight分别是从左右填充
    def a = 'Hello'
    a = a.center(10,'World')
    println a
    
    //输出
    WoHelloWor
    
    • 获取指定位置上的字符
    def a = 'Hello'
    println a[1]
    println a[1..2]
    
    //输出
    e
    el
    
    • minus:滤除指定字符串(减法运算)
    def a = 'Hello'
    def b = 'llo'
    println a-b
    //或者
    println a.minus(b)
    
    //输出
    He
    
    • reverse:字符串反转
    def a = 'Hello'
    println a.reverse()
    
    //输出
    olleH
    
    • capitalize:首字母大写
    def a = 'hello'
    println a.capitalize()
    
    //输出
    Hello
    
    • isNumber:判断字符串是否是数组类型
    def a = '12345'
    println a.isNumber()
    
    //输出
    true
    

    逻辑控制

    • switch-case:相对于java语言可以传入更多的数据类型
    def a = [1,2,3]
    switch (a){
        case Integer: //类型
            println "Integer"
            break
        case [1,2,3,'a']: //数组
            println "Array"
            break
        case 1..4: //范围
            println "Range"
            break
    }
    
    • for
    //相对于java增加了对范围的循环
    def a = 0
    for(i in 1..9){
        a++
    }
    
    //对List进行循环
    def a = 0
    for(i in [1,2,3,4,5,6,7]){
        a++
    }
    
    //对Map进行循环
    def key = 1
    def value = ""
    for(i in [1:"a",2:"b",3:"c"]){
        key+=i.key
        value+=i.value
    }
    

    相关文章

      网友评论

        本文标题:Groovy快速学习(1) - 数据类型与逻辑控制

        本文链接:https://www.haomeiwen.com/subject/bcnisftx.html