天天看點

【Groovy】字元串 ( 字元串拼接 | 多行字元串 )

文章目錄

  • 一、字元串類型變量
  • 二、多行字元串
  • 三、完整代碼示例

一、字元串類型變量

在雙引号字元串中 , 使用 ${變量名} 進行字元串拼接 ,

  • ${變量名} 符号的取值 , 是在 定義時取值 ;
def s1 = "Hello"
        def s3 = "${s1} World!!!"
        s1 = "Hello Groovy" // 修改被拼接的函數值
        // 列印的值為 "Hello World!!!"
        println s3      
  • ${->變量名} 符号的取值 , 是在 通路時取值 , 不是在定義時取值 , 如果通路前 , 修改了 變量名 對應的變量值 , 則最後取值是修改後的值 ; 這是閉包的規則 ;
def s1 = "Hello"
        def s4 = "${->s1} World!!!"
        s1 = "Hello Groovy" // 修改被拼接的函數值
        // 列印的值為 "Hello Groovy World!!!"
        println s4      

在 單引号 中 , 不能進行字元串連接配接操作 ;

// 單引号中不能進行字元串拼接
        def s5 = '${s1} World!!!'
        // 列印的值為 "${s1} World!!!"
        println s5      

​字元串拼接代碼示例 :​

// 字元串
        def s1 = "Hello"

        // 字元串拼接

        // 注意 , 雙引号中才能進行字元串拼接 , 單引号中不行
        // ${變量名} 符号的取值 , 是在 定義時取值 ;
        def s3 = "${s1} World!!!"

        // ${->變量名} 符号的取值 , 是在 通路時取值 , 不是在定義時取值 ,
        // 如果通路前 , 修改了 變量名 對應的變量值 , 則最後取值是修改後的值 ;
        // 這是閉包的規則 ;
        def s4 = "${->s1} World!!!"

        // 修改被拼接的函數值
        s1 = "Hello Groovy"

        // 分别列印 s3 字元串内容和類型 , 修改被拼接的函數值沒有影響到最終字元串值
        println s3
        println s3.class

        // 分别列印 s4 字元串内容和類型
        // 修改被拼接的函數值 影響到了 最終字元串值
        println s4
        println s4.class

        // 單引号中不能進行字元串拼接
        def s5 = '${s1} World!!!'
        // 分别列印 s4 字元串内容和類型
        println s5
        println s5.class      

​執行結果 :​

Hello World!!!
class org.codehaus.groovy.runtime.GStringImpl
Hello Groovy World!!!
class org.codehaus.groovy.runtime.GStringImpl
${s1} World!!!
class java.lang.String      

二、多行字元串

在 普通字元串中 , 使用 \n 符号 , 代表換行操作 ,

def m1 = "Hello\nWorld"      

代表

Hello
World      

字元串 ;

6

6

6 個雙引号之間 , 可以直接寫多行文本 , 多行文本的 左右兩側各有

3

3

3 個雙引号 ;

def m2 = """Hello
World"""      

代表

Hello
World      

字元串 ;

​代碼示例 :​

// 多行字元串輸出
        def m1 = "Hello\nWorld"
        def m2 = """Hello
World"""
        // 列印多行字元串
        println m1
        println m2      

​執行結果 :​

Hello
World
Hello
World      

三、完整代碼示例

​完整代碼示例 :​

class Test {
    static void main(args) {

        // 字元串
        def s1 = "Hello"

        // 字元串拼接

        // 注意 , 雙引号中才能進行字元串拼接 , 單引号中不行
        // ${變量名} 符号的取值 , 是在 定義時取值 ;
        def s3 = "${s1} World!!!"

        // ${->變量名} 符号的取值 , 是在 通路時取值 , 不是在定義時取值 ,
        // 如果通路前 , 修改了 變量名 對應的變量值 , 則最後取值是修改後的值 ;
        // 這是閉包的規則 ;
        def s4 = "${->s1} World!!!"

        // 修改被拼接的函數值
        s1 = "Hello Groovy"

        // 分别列印 s3 字元串内容和類型 , 修改被拼接的函數值沒有影響到最終字元串值
        println s3
        println s3.class

        // 分别列印 s4 字元串内容和類型
        // 修改被拼接的函數值 影響到了 最終字元串值
        println s4
        println s4.class

        // 單引号中不能進行字元串拼接
        def s5 = '${s1} World!!!'
        // 分别列印 s4 字元串内容和類型
        println s5
        println s5.class

        // 多行字元串輸出
        def m1 = "Hello\nWorld"
        def m2 = """Hello
World"""
        // 列印多行字元串
        println m1
        println m2
    }
}      

​執行結果 :​

Hello World!!!
class org.codehaus.groovy.runtime.GStringImpl
Hello Groovy World!!!
class org.codehaus.groovy.runtime.GStringImpl
${s1} World!!!
class java.lang.String
Hello
World
Hello
World      

繼續閱讀