【初心者向け】JavaとScalaを同時にマスターしよう!Vol.2

こんにちは!ぐちです。

好評企画?!の続編です。といいますか僕が学んだことをつらつら書いていくだけですので学んだことから小出しにしていきます。

それではVol.2いってみましょう!!

Vol.1はこちらからどうぞ。

変数定義

プログラミングには欠かすことのできない変数定義。これを比較してみましょう!前回も同じコードをScalaとJavaで書いていましたが、いつまで続けられるのか。笑

とにかく下記のコードをご覧ください。JavaもScalaも、イミュータブル(変更不可)とミュータブル(変更可能)な変数を定義することができます。

Java

Javaでイミュータブルな変数といいますか定数ですね、を定義するにはfinalをつけて型を宣言します。ミュータブルな変数を定義するには型宣言を行い、変数名を宣言します。

public class Main {
    public static void main(String[] args) {
        final String a = "a"; // 変更不可
        String b = "b"; // 変更可能
        a = "c"; // ここでエラーになる
        b = "d"; // これはOK
    }
}

Scala

Scalaでイミュータブルな変数を定義するにはvalで変数宣言を行います。後々理解していくことになると思うのですが、Scalaではこのval宣言された変数が重要らしいです。ミュータブルな変数を定義するのはvar宣言を行うようです。

object Main {
  def main(args: Array[String]) :Unit = {
    val a = "a" // 変更不可
    var b = "b" // 変更可能
    a = "c" // ここでエラーになる
    b = "d" // これはOK
  }
}

型推論

Javaのコードでは変数aも変数bString型で宣言されていますよね。Javaではこのように変数のデータ型を明示的に宣言する必要がありますが、Scalaでは型宣言が省略されています。

これは型推論という仕組みが働き、文字列型の値が代入されるのであれば、変数aも文字列型でしょ?!という「よきにはからえ」的な作用が働きます。もちろん明示的に型宣言することも可能です。その場合は下記のように書きます。

def main(args: Array[String]) :Unit = {     
    val a: String = "a"
    var b: String = "b"
}

では今回はこの辺で。