概述
文章目录
- 字符串
- GString
字符串
-
groovy不区分
""
和''
,都是字符串String类的实例。如果要创建一个字符'a' as char
-
groovy会把使用单引号创建的String作为一个常量,如果里面放了任何表达式,Groovy并不会计算它们
-
java的字符串是不可变的,Groovy的字符串也同样,一旦创建一个字符串实例,就不能修改
-
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
-
多行字符串使用’’’***’’’
//多行字符串 def line = ''' aaaaa bbbbb ccccc ''' println line //java.lang.String println line.getClass().name
-
惰性求值:当一个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笔记(二)之字符串字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复