Groovy学習(一)

3664 ワード

しばらくの間rubyが戻ってきてJavaを見続けると、文法の優雅さや同じ機能を完成させるために必要なコード量は確かに遠いような気がしますが、現在java仮想マシンで実行されているプログラムもjava言語で完全に開発する必要はありません.jvmでの多言語プログラミングを試してみるつもりです.代替目標はJRuby、Scala、Groovyです.Java言語と開発を支援するためだけに、Javaフレームワークのサポートを考慮し、intellij ideaが追加のプラグインを必要とせずにGroovyをサポートすることを発見したことを考慮して、Groovyを選択して学習した.
数値:
Groovyは整数と浮動小数点数をサポートし、小数点のない数値はデフォルトで整数であり、いずれもIntegerクラスのインスタンスであり、正数、負数、ゼロを含む.小数点は浮動小数点数であり、BigDecimalクラスのインスタンスであり、小数点で始まることは避けなければならない.
式:
特に、整数を整数で割った結果は浮動小数点数に違いありません.整数部分の値だけを取りたい場合は、intdivメソッドを使用します.
13.intdiv(5)の結果は2であった.モデリング演算に浮動小数点数を含めるのは違法で、modメソッドが誤って呼び出されたことを示す.
演算子:
(1)Groovy演算子は、次のようなオブジェクトのメソッドのリロードです.
  • 5 + 3   =>  5.plus(3)
  • 5 - 3    => 5.minus(3)
  • 5 * 3    => 5.multiply(3)
  • 5/3    => 5.divide(3)
  • 5 % 3   => 5.mod(3)

  • (2)演算子優先度はC言語に対して特別ではない
    変数の説明:
    Groovyはdefを使用して変数、変数命名規則を明らかにします.
  • は、アルファベットと数字からなる
  • でなければなりません.
  • 大文字小文字敏感
  • 頭文字は
  • 頭文字でなければなりません
  • 下線は、
  • をアルファベットで表示するネーミングに使用できます.
  • キーワード
  • は許可する.
    文字列:
    (1)Groovyは、単一引用符(')と二重引用符(")を使用して文字列をカプセル化できるほか、三重引用符(""""")もサポートされています.三重引用符は、文字列に複数行のテキストが含まれていることを示し、rubyのhere docと同様です.
    """hello
    Groovy
    and
    Java"""

    また、単一引用符の文字列は補間できません.ルールはrubyと同じです.たとえば、次のようにします.
    def age = 24
    'My age is ${age}'        //My age is ${age}
    "My age is ${age}"       //My age is 24
    """My age is ${age}""" //My age is 24
    "My age is \${age}"       //My age is ${age}

    (2)文字索引によりサブ文字列を取得し、以下の形式をサポートする.
    def str = "Hello world"
    str[4]         //o
    str[-1]       //d
    str[1..2]    //el
    str[1..<3] //el
    str[4..2]   //oll
    str[4,1,6] //oew

    (3)文字列の基本方法:
    def str = "Hello world"
    'Hello' + ' world'    //Hello world
    'Hello' * 3              //HelloHelloHello
    str - 'o world'        //Hell
    str.size()                //11
    str.length()           //11
    str.count('o')        //2
    str.contains('ell')  //true
    str.leftShift(' world') //Helloworld,    str << ' world'

    JavaのStringオブジェクトと同様Groovyの文字列値は変更できません
    Groovyは付加的な方法を含むことによってJDKの中のクラスを拡張して、Stringクラスも多くの実用的な方法を多くして、詳しくはAPIを参照してください
    (3)文字列の比較:
    str 1==str 2はstr 1.equal(str 2)に等価である.str1 <=>  str 2、str 1.compareTo(str 2)に等価
    (4)正規表現:
    Javaで使用される正規表現は主にmatchesメソッドとreplaceAllメソッドであり、Groovyでも使用できます.
    "abc".matches("abc")     //true
        "abc".matches("bc")       //false
        "abc".replaceAll("bc", "")//"a"

    同時にGroovyは~をサポートして正規表現を定義し、一致させる.
    class Test {
        static main(args) {
            def regex = ~'hello';//       , ~               
            def matcher =  ("hello world" =~ "hello");//    Matcher  ,~   =  
            println regex.class;//class java.util.regex.Pattern
            println regex;//hello,    regex.toString;
            println matcher;//java.util.regex.Matcher[pattern=hello region=0,11 lastmatch=hello], matcher.toString()
            println matcher.find();//true
            println matcher.matches();//false
            if ("hello world" =~ regex) {
                println true;//    true
            }
            if ("hello world" =~ "hello") {
                println true;//    true
            }
        }
    }

    ifまたはwhileの=~は「string」.find(「sring 2」またはRegex対像)に相当し、GroovyはStringに相当するmatchesメソッドに相当するもう一つのマッチング=~を提供していることがわかる.
    正規表現の^$*+などの運用はここでは説明しませんが、興味のある方は自分で正規表現の使い方を試してください.