【5分レッスン】Kotlin超入門コース#07 データ型

はじめに

こんにちは。キノコードです。
「【5分レッスン】Kotlin超入門コース#07 データ型」について説明します。

データ型とは?

データ型とは、変数に入れるデータの種類のことです。
この動画では、データ型の数値型、文字列型、ブール型、最後にデータ型の型推論について説明します。
ちなみに、Kotlinでは、変数にデータを入れるときに、データ型を指定する必要があります。
このようなプログラミング言語のことを静的型付け言語といいます。
静的型付け言語には、Kotlin、Java、Go、C言語などがあります。
一方、変数にデータを入れるときに、データ型を指定する必要がなく、自動的にデータ型を判断してくれる言語があります。
このような言語のことを動的型付け言語といいます。
動的型付け言語には、Ruby、Python、JavaScript、PHPなどがあります。

Kotlinの整数型

それではまず、最初に、数値型について説明します。
数値型には、整数型と小数点型があります。
整数型のデータ型には、Byte,Short,Int,Longの4つがあります。
これらの違いは、扱える桁数です。
扱える桁数が小さい順に、Byte、Short、Int、Longとなります。
Kotlinのプログラムを書いて、みていきましょう。

fun main() {
    var var01:Byte = 1;
    var var02:Short = 12345;
    var var03:Int = 1234567890;
    var var04:Long = 123456789000;
    
    println(var01)
    println(var02)
    println(var03)
    println(var04)
}

Byteです。
Shortです。
Intです。
Longです。
実行して表示してみましょう。
表示されました。

fun main() {
    var var01:Byte = 1;
    var var02:Short = 12345;
    var var03:Int = 1234567890;
    var var04:Int = 123456789000;
    
    println(var01)
    println(var02)
    println(var03)
    println(var04)
}

longで代入した数値を、int型に変更してみましょう。
桁数が大きすぎて、int型では扱えないはずです。
実行してみましょう。
エラーになりました。

次に、小数点のデータ型です。
小数点のデータ型は、Float,Doubleの2つです。
FloatとDoubleは、扱える小数点以下の桁数に違いがあります。
DoubleはFloatより多くの桁数を扱えます。
Floatは数値の終わりにアルファベットの大文字の「F」か小文字の「f」をつけます。
小数点を扱うときは、Doubleを使うことの方が多いです。
kotlinのプログラムを書いてみます。

fun main() {
    var var01:Double = 1.23456789;
    var var02:Float = 1.23F;
    
    println(var01)
    println(var02)
}

doubleはfloatより多くの桁数の小数点を扱えます。floatにはFをつけます。doubleの桁数ほど扱えません。
表示されました。

Kotlinの文字列型

次に、文字列型のデータ型についてです。
文字列型のデータ型は、Char,Stringがあります。
文字1つの場合はCharを使い、文字2つ以上の場合はStringを使います。
Charはシングルクォーテーション、Stringはダブルクォーテーションでくくります。
Stringは正確にはデータ型ではなく、Stringというクラスです。
Kotlinのプログラムを書いてみます。

fun main() {
    var var01:Char = 'c';
    var var02:String = "hello,World!";
    
    println(var01)
    println(var02)
}

Charはシングルクォーテーション、Stringはダブルクォーテーションです。
実行してみましょう。
表示されました。

Kotlinのブール型

最後に、ブール型です。
ブール型は、Boolean型(ブーリアン型)ともいいます。
ブール型は、trueまたfalseの2つのうち、どちらか1つを持つ型です。
trueとfalseとはなんでしょうか?
例えば、10と1では10の方が大きいです。
つまり、「10>1」は正しいです。
これを変数に代入するとtrueが入ります。
逆に「10<1」は誤りです。これを変数に代入すると、falseが入ります。
Kotlinのプログラムを書いてみます。

fun main() {
    var var_a:Int = 10;
    var var_b:Int = 1;
    var var_bool:Boolean;

    var_bool = (var_a > var_b);

    println(var_bool);
}

var_aという変数に10を代入。var_bという変数に1を代入。
var_a>var_bは正しいので、「True」がvar_boolという変数に代入されます。
実行します。
trueが表示されました。

fun main() {
    var var_a:Int = 10;
    var var_b:Int = 1;
    var var_bool:Boolean;

    var_bool = (var_a < var_b);

    println(var_bool);
}

不等号を逆にすると誤りなのでfalseが代入されるはずです。
実行します。
falseが表示されました。

Kotlinの型推論

fun main() {
    var var01 = 1;
    var var02 = 12345;
    var var03 = 1234567890;
    var var04 = 123456789000;
    
    println(var01.javaClass.kotlin)
    println(var02.javaClass.kotlin)
    println(var03.javaClass.kotlin)
    println(var04.javaClass.kotlin)
}

最後に、型推論についてです。
Kotlinの場合、変数を初期化するときは、変数に入れるデータの種類を指定する必要がありません。
変数に代入しようとしているデータから、自動的に判断してくれるからです。
これを型推論と言います。
動的型付け言語も、型推論付き静的型付け言語も、データ型を自動で判断してくれます。
では、これらは、どう違うのでしょうか?
データ型を決めるタイミングが違います。
動的型付け言語は、プログラムを実行したタイミングでデータ型を決めます。
一方、型推論付き静的型付け言語は、コンパイルしたタイミングで型を決めます。
したがって、動的型付け言語は、変数に代入してデータ型が決まった後に、異なるデータ型の値を代入することができます。
これに対し、型推論付き静的型付け言語は、コンパイルをしてデータ型が決まった後は、異なるデータ型の値を代入することができません。
では、試しに整数型を使って、型推論の動きを見てみましょう。
先ほどはデータ型を指定して代入しましたが、ここでは型推論を見るためにデータ型を指定せずに数値を代入します。
javaClass.kotlinは、変数の型を調べるために使います。
では、Code Runで実行してみましょう。
先ほどByte、Shortだった変数は、Intになっています。
一方Longの変数はそのままLongです。
Intで扱える数値は、KotlinがIntに、Intで扱えなかった数値はLongにしてくれています。
このように、Kotlinでは型を指定しなくても、Kotlinが型を推論して変数を初期化してくれます。

fun main() {
    var var_a:Int = 10;
    var var_b:Int = 1;
    var var_bool:Boolean;

    var_bool = (var_a < var_b);

    println(var_bool);
}

変数のデータ型が決まった後に、異なるデータ型の値を代入することができないか確かめてみましょう。
var01という変数に1を代入。続けて、var01にhello,World!を再代入してみます。
Code Runで実行してみましょう。
エラーになりました。

KinoCode チャンネル

YouTubeで毎日動画配信しています。
動画は3分間なので、
 ・通勤時間
 ・お昼休み
 ・お手すきのとき
 ・寝る前
など手軽に視聴できます。
 
ちょっとしたインプットにどうぞ!
 
▼チャンネル登録はこちらからどうぞ。