Groovy学習(一)
しばらくの間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と同様です.
また、単一引用符の文字列は補間できません.ルールはrubyと同じです.たとえば、次のようにします.
(2)文字索引によりサブ文字列を取得し、以下の形式をサポートする.
(3)文字列の基本方法:
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でも使用できます.
同時にGroovyは~をサポートして正規表現を定義し、一致させる.
ifまたはwhileの=~は「string」.find(「sring 2」またはRegex対像)に相当し、GroovyはStringに相当するmatchesメソッドに相当するもう一つのマッチング=~を提供していることがわかる.
正規表現の^$*+などの運用はここでは説明しませんが、興味のある方は自分で正規表現の使い方を試してください.
数値:
Groovyは整数と浮動小数点数をサポートし、小数点のない数値はデフォルトで整数であり、いずれもIntegerクラスのインスタンスであり、正数、負数、ゼロを含む.小数点は浮動小数点数であり、BigDecimalクラスのインスタンスであり、小数点で始まることは避けなければならない.
式:
特に、整数を整数で割った結果は浮動小数点数に違いありません.整数部分の値だけを取りたい場合は、intdivメソッドを使用します.
13.intdiv(5)の結果は2であった.モデリング演算に浮動小数点数を含めるのは違法で、modメソッドが誤って呼び出されたことを示す.
演算子:
(1)Groovy演算子は、次のようなオブジェクトのメソッドのリロードです.
(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メソッドに相当するもう一つのマッチング=~を提供していることがわかる.
正規表現の^$*+などの運用はここでは説明しませんが、興味のある方は自分で正規表現の使い方を試してください.