我是靠谱客的博主 苹果摩托,最近开发中收集的这篇文章主要介绍Groovy笔记(二)之字符串字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 字符串
    • GString

字符串

  1. groovy不区分""'' ,都是字符串String类的实例。如果要创建一个字符'a' as char

  2. groovy会把使用单引号创建的String作为一个常量,如果里面放了任何表达式,Groovy并不会计算它们

  3. java的字符串是不可变的,Groovy的字符串也同样,一旦创建一个字符串实例,就不能修改

  4. Groovy支持惰性求值,即把一个表达式存在一个字符串中,稍后打印。Groovy并不会简单地因为使用双引号或者正斜杠就创建一个GString实例,它会只能地分析字符串,以确定该字符串是否可以使用一个简单的普通String

        class StringTest {
            public static void main(String[] args) {
                def value = 25
                //输出: this is value 25
                println "this is value ${value}"
                //输出:this is value ${value}
                println 'this is value ${value}'
                //输出:this is "value"
                println 'this is "value" '
        
        
                def str = 'JANNAL'
                def str2 = "JANNAL"
                //输出:java.lang.String
                println str.getClass().name
                println str2.getClass().name
        
                //可以通过[]操作符读取,输出N
                println str[3]
                try {
                    //尝试修改字符,会抛出异常
                    str[3] = 'k'
                } catch (ex) {
                    println ex
                }
        
        
                def username = new StringBuilder("jannal")
                def text = "My name is $username"
                //输出:My name is jannal
                println text
                //输出:org.codehaus.groovy.runtime.GStringImpl
                println text.getClass().name
        
            }
        }
    
    
    

GString

  1. 多行字符串使用’’’***’’’

        //多行字符串
        
        def line = '''
        aaaaa
        bbbbb
        ccccc
        '''
        println line
        //java.lang.String
        println line.getClass().name
    
    
  2. 惰性求值:当一个GString实例求值时,如果其中包含一个变量,该变量的值就简单的打印到一个Writer,通常是一个StringWriter。如果GString包含一个闭包,则闭包就会被调用.如果闭包接收一个参数,GString会把Writer对象当做一个参数发送给它。如果闭包没有任何参数,GString会简单调用该闭包,并打印我们想返回给Writer的结果。如果闭包接收的参数不止一个,则调用失败,抛出异常

        price = 6000
        company = 'Google'
        quote = "Today $company stock closed at $price"
        //输出结果:Today Google stock closed at 6000
        println quote
        
        
        stocks = [Apple: 7000, Microsoft: 9000]
        /**
         * 输出结果
         * Today Google stock closed at 6000
         * Today Google stock closed at 6000
         * 不能修改Gstring所绑定的内容
         */
        stocks.each { key, value ->
            company = key
            price = value
            println quote
        }
        
        /**
         * 输出:
         * Today Apple stock closed at 7000
         * Today Microsoft stock closed at 9000
         */
        companyClosure={it.write(company)}
        //companyClosure={->company} 与上面等价
        
        priceClosure={it.write("$price")}
        //priceClosure={->price} 与上面等价
        quote = "Today ${companyClosure} stock closed at ${priceClosure}"
        
        stocks.each { key, value ->
            company = key
            price = value
            println quote
        }
        
        
        //使用闭包解决(闭包没有任何参数可以省略it)
        quote = "Today ${-> company} stock closed at ${-> price}"
        /**
         * 输出:
         * Today Apple stock closed at 7000
         * Today Microsoft stock closed at 9000
         */
        stocks.each { key, value ->
            company = key
            price = value
            println quote
        }
    

最后

以上就是苹果摩托为你收集整理的Groovy笔记(二)之字符串字符串的全部内容,希望文章能够帮你解决Groovy笔记(二)之字符串字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部