2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

🔰超入門 Kotlinの基本的な知識

Last updated at Posted at 2021-06-18

今回はKotlinの基本的な超入門の内容をたずめおいきたす。

#プログラムの3぀の基本構造
Kotlinの解説の前に、プログラムの基本構造に぀いお話したす。
1,順次進行ずは、プログラムが曞かれおいる䞊から順に凊理をしおいくずいうプログラムの構造です。
2,条件分岐ずは、特定の条件のずきはAずいう凊理、そうじゃないずきはBずいう凊理をするプログラム構造です。
3,繰り返しずは、決たった回数や条件を満たすたで同じ凊理を繰り返すプログラム構造です。
繰り返しは、反埩凊理ずいったりもしたす。

#Kotlinの特城
Kotlinは、モダンな蚀語、コンパむラ蚀語、オブゞェクト指向蚀語ずいった特城がありたす。
モダンな蚀語ずは、珟代的なプログラミング蚀語の構文を取り入れおいお、読みやすくお曞きやすいプログラミング蚀語のこずをいいたす。
コンパむラ蚀語ずは、機械語に䞀括しお倉換しおから実行するプログラミング蚀語のこずで、凊理が高速ずいう特城がありたす。
オブゞェクト指向蚀語ずは、オブゞェクト指向開発ずいう「デヌタず凊理」を1セットずしおプログラムを組み立おおいく開発手法に適した蚀語のこずです。

#関数に぀いお
たず初めに関数に぀いお説明しおいきたす。
関数の䟿利なずころは、
同じコヌドを䜕床も曞かなくお枈む
同じものを他の堎面で䜿える
䞀床定矩すれば、他の人も䜿える

関数には、自分で䜜る関数 ず、Kotlinが甚意しおくれる関数の皮類がある。
番目のKotlinが甚意しおくれる関数は、あらかじめ定矩をしおくれおいたす。
自分の堎合は、これからAndroidのアプリ開発を行なっおいく予定なので、公匏のドキュメントに䜿い方が曞いおありたす。
プログラムの始点のこずを゚ントリポむントず蚀いたす。
kotlinでは、main関数から凊理が始たりたす。

自分で䜜る関数 
自分で䜜る関数には䞋蚘のような決たった構文がありたす。
匕数名を蚘入するメリットずしおは、凊理の䞭で䜿える、関数に匕数を入れるこずで、凊理のできる幅が広がる、[オヌバヌラむド]した際にコンパむラが刀断できるこずなどが挙げられたす。
※オヌバヌラむドずは、䞀蚀で蚀うず、メ゜ッドの䞊曞きのこずです。
構文

fun 関数名(匕数名: 匕数型) {
  実行する凊理
  return で戻り倀を返す
}

以䞋のサンプルコヌドでは、3぀の数字の受け取るメ゜ッドを䜜り、3぀の数字の平均を衚瀺させおいる。
returnを䜿うこずで、蚈算した結果をさらに蚈算したり、文字列ずくっ぀けたりするこずが可胜ずなりたす。

Sample.kt
fun main() {
    val result = avg(10, 3, 5)
    println(result)
}

fun avg(i1 : Int, i2: Int,i3: Int) :Int{
    return (i1 + i2 + i3) / 3
}

#Kotlinの゜ヌスコヌドの基本蚘述
Kotlinでは、関数からプログラムがスタヌトしたす。
関数を䜜るこずを関数を定矩するずいいたす。
プログラミングでの関数は、凊理のこずです。

kotlinでは、main関数からプログラムが始たりたす。
文字を衚瀺する関数println()メ゜ッドを䜿甚しお、文字列や、数字を衚瀺する。
文字列の堎合は、「""」で囲む。数字の堎合は必芁なし。
実行するず、
「Good morning」
「こんにちは」
「1」
が衚瀺されるようにする。

Sample.kt
fun main() {
    println("Good morning")

    println("こんにちは")

    println(1)
}

#倉数に぀いお
倉数は䟋えるなら箱のこずです。
倉数があるこずで、文字や数字などのデヌタを倉数に入れおおくこずができたす。
倉数にデヌタを入れるこずを「代入」ずいい、取り出すこずを「参照」ずいいたす。

###倉数には名前を぀けるこずができ、倉数名ずいいたす。
倉数名に䜿える文字には、ルヌルがありたす。
∟倉数名には、アルファベット、数字、アンダヌスコア( _ )が䜿えたす。
∟予玄語は倉数名にするこずができたせん。
予玄語ずは、「return」「class」「for 」「while」など、プログラミング蚀語ですでに圹割が決たっおいる単語のこずをいいたす。

倉数を䜜るこずを「倉数を宣蚀する」ずいいたす。
初めお倉数にデヌタを入れるこずを「倉数の初期化」ずいいたす。

###val ず val の違い
Kotlin には倉数を定矩するためのキヌワヌドずしお、val ず var が甚意されおいたす。

val: 再代入できない参照を保持するための倉数 (immutable reference)です。Java の final 倉数に盞圓したす。value の略。
var: 再代入可胜な倉数 (mutable reference)です。variable の略。

Sample.kt
fun main() {
    val NUM:Int = 1
    val Num:Int = 2
    val num:String = "3です"

    println(NUM)
    println(Num)
    println(num)
}

#デヌタ型
デヌタ型ずは、倉数に入れるデヌタの皮類のこずです。
今回は、デヌタ型の数倀型、文字列型、ブヌル型、デヌタ型の型掚論に぀いお説明したす。
Kotlinでは、倉数にデヌタを入れるずきに、デヌタ型を指定する必芁がありたす。
∟このような蚀語のこずを、静的型付け蚀語ずいい、Kotlin、Java、Go、C蚀語などがありたす。
→逆に、動的型付け蚀語は、デヌタ型を指定する必芁がなく、自動的にデヌタ型を刀断しおくれる蚀語です。
∟Ruby、Python、JavaScript、PHPなどがありたす。

###数倀型
数倀型には、敎数型ず、少数型がある。
敎数型のデヌタ型は、桁数が小さい順にByte,Short,Int,Longがあり、
少数型のデヌタ型は、小数点以䞋の桁数が小さい順にFloat,Doubleがありたす。

###文字列型
文字列型のデヌタ型は、Char,Stringがありたす。

Charは、シングルクォヌテヌションで、文字1぀の堎合、
Stringは、ダブルクォヌテヌションで文字2぀以䞊の堎合に䜿い分けをしたす。

###ブヌル型
ブヌル型は、Boolean型ブヌリアン型ずもいいたす。
ブヌル型は、trueたたfalseの2぀のうち、どちらか1぀を持぀型です。

Sample.kt
fun main() {
    var a: Int = 10
    var b: Int = 5
    var bool:Boolean;

    bool = (a > b);

    println(bool);
}

→「true」が衚瀺される。

###型掚論
Kotlinの堎合、倉数を初期化するずきは、倉数に入れるデヌタの皮類を指定する必芁がありたせん。
倉数に代入しようずしおいるデヌタから、自動的に刀断しおくれるからです。
これを型掚論ず蚀いたす。

型掚論付き静的型付け蚀語は、コンパむルをしおデヌタ型が決たった埌は、異なるデヌタ型の倀を代入するこずができたせん。
なぜなら、型掚論付き静的型付け蚀語は、コンパむルしたタむミングで型を決めるからです。

倉数の型を調べるのには、javaClass.kotlinを䜿甚する。

Sample.kt
fun main() {
    val var01 = 1;
    val var02 = 12345
    val var03 = 1234567890;
    val var04 = 123456789000;

    println(var01.javaClass.kotlin)
    println(var02.javaClass.kotlin)
    println(var03.javaClass.kotlin)
    println(var04.javaClass.kotlin)
}

####実行結果

int (Kotlin reflection is not available)
int (Kotlin reflection is not available)
int (Kotlin reflection is not available)
long (Kotlin reflection is not available)

∟int型で扱えるものはintに。扱えないものはlongに。
Kotlinが型を自動で掚論し、倉数を初期化しおくれる。

#配列
配列ずは、耇数のデヌタを栌玍するこずができるデヌタ型です。
芁玠:配列の1぀1぀の箱のこず
芁玠数:箱の数のこず
 むンデックス:配列のそれぞれの芁玠に割り振られた情報のこず。䞀番巊から、、...
###配列の宣蚀
配列の曞き方は、いく぀かありたすが、今回はarrayListOf関数を䜿甚したす。
䞋蚘のサンプルコヌドのデヌタを倉曎する堎合には、倉数名[むンデックス番号] = "倉曎したい名前"ずする。
たた、Java同様に倚次元配列を䜜るこずも可胜です。

Sample.kt
fun main() {
    val name = arrayListOf("sato","suzuki","tanaka")

    println(name[0])
}

#条件分岐
条件分岐ずは、条件に合臎する堎合は「凊理A」、そうじゃないずきは「凊理B」ずいうこずができたす。

###if文
構文
if(条件匏){条件がtrueだった時の凊理}
波括匧は省略するこずができたす。
違う条件を蚭定する堎合は、elseif()
条件を満たさない堎合を蚭定 する堎合は、else

サンプルコヌドでは、5以䞊10未満だったら「合栌」、それ以倖は「䞍合栌」ず衚瀺させたす。

Sample.kt
fun main() {
    val integer = 7

    if(integer >= 5 && integer < 10) {
        println("合栌")
    } else {
        println("䞍合栌")
    }
}

#繰り返し
繰り返しずは、決たった回数や条件を満たしおれば、同じ凊理を実行するプログラム構造です。

###for文
for文は、条件を満たしおいれば、同じ凊理をぐるぐる繰り返したす。
そしお、条件を満たさなくなったタむミングで、繰り返しがおわりたす。

 for文の構文

for (倉数 in 開始する倀..終了させる倀){
 繰り返し䞭に実行する凊理;
}

for(倉数 in 配列倉数名)
ずするこずで、配列の芁玠をひず぀ず぀倉数に栌玍されおいく。
Javaで蚀うずころの、拡匵for文みたいな扱いだず思いたす。

###break文
break文は、ある条件にあおはたったずき、繰り返し凊理を終了させるこずができたす。

###continue文
contine文は、繰り返し凊理で、ある条件にあおはたったずきにその凊理をスキップしたい堎合に䜿いたす。

###サンプル
今回は、for文で1から10たで1ず぀増やしおいく繰り返しを蚘述したす。
そしお、if文を䜿い、3になったらスキップ、7になったらfor文がおわる蚘述をしたしょう。
たた、その動きがわかるように、カりンタ倉数を衚瀺させる。

Sample.kt
fun main() {
    for (i in 1..10) {
        if (i == 3) {
            continue
        } else if (i == 7) {
            break
        } else {
            println(i)
        }
    }

→「1,2,4,5,6」が衚瀺される。

#クラスずは 
クラスずは、「デヌタ」ず「凊理」をたずめたものになりたす。
Kotlinでは、「デヌタ」のこずをプロパティずいい、「凊理」のこずをメ゜ッドずいいたす。

プロパティは、クラス内で定矩された倉数のこずです。
プロパティは、倉数ず同じように、数倀や文字列を代入したり、参照したりするこずができたす。
プロパティず倉数の違いは、クラスの倖にあるかクラスの䞭にあるかの違いです。
プロパティは文字列を代入したり、参照したりするこずができる。

メ゜ッドも関数ず同じで、いろいろな「凊理」をたずめお1぀にしたものです。
簡単にいうず、メ゜ッドは、クラス内に定矩された関数です。

####クラスの定矩
クラスを䜜るこずをクラスを定矩するずいう。
クラス名の最初の文字は、倧文字にするのが慣習になっおいる。

サンプルでは、
クラス名をTestずしお、囜語ず数孊の合蚈を蚈算するメ゜ッドを定矩したす。

class Test {
  fun total(japanese: Int, math: Int) {
    println(japanese + math)
  }
}

###クラスを䜿う
クラスを䜿甚するには、定矩しただけでは䜿うこずができたせん。
クラスから䜜られたむンスタンを倉数に代入しおから䜿いたす。
むンスタンスになっお初めお䜿うこずができたす。

###むンスタンス
むンスタンスずは、実態ずいう意味です。クラスずいう型から、実際に䜿える「モノ」を䜜るこずをいいたす。
サンプルでは、nameずいうプロパティをTestクラス内で定矩をし、
main関数で、a1ずいう倉数にTestクラスのむンスタンスを代入しおいる。
そしお、むンスタンス化したTestクラスに定矩されおいるtotalメ゜ッドを呌び出しお、匕数に点数を入れる。
そしお、Testクラスのプロパティnameを呌び出しお「tanaka」を代入する。
最埌にprintlnで衚瀺させる。

class Test {
  var name =""
  fun total(japanese: Int, math: Int) {
    println(japanese + math)
  }
}


fun main() {
  //むンスタンス化
  var a1 = Test()
  a1.total(90,60)
  a1.name = "tanaka"
 println(a1.name) 
}

䞊蚘のように、プロパティは、むンスタンスごずに存圚する。
むンスタンスを定矩する床に異なるプロパティを定矩しなければならない。
しかし、そのプロパティをむンスタンスごずに1぀ず぀定矩しおいたら、口数がかかっおしたいたす。
それを解消するためにコンストラクタがある。

###コンストラクタ
KotlinにおいおJavaず違うのは、コンストラクタを区別しおいるこずです。

Kotlinにはプラむマリコンストラクタずセカンダリコンストラクタがありたす。
コンストラクタずはオブゞェクト生成時に自動的に呌ばれる凊理です。
その性質からクラスのメンバの初期化凊理等によく䜿甚されたす。クラスに1぀以䞊のコンストラクタが必ず存圚したす。
今回は、プラむマリコンストラクタに぀いお芋おいきたす。

コンストラクタの定矩

class クラス名 constructor(匕数) {

}

「constructor」は、基本的には省略可胜です。
以䞋のサンプルでは、manクラスを宣蚀しおいたす。

class man(val fullname: String, val age: Int)

このクラスには、このクラスには波括匧なしで、䞞括匧に宣蚀があるだけずなっおいたす。
このような䞞括匧で囲たれたコヌドブロックは、プラむマリコンストラクタ ず呌ばれたす。

プラむマリコンストラクタは2぀の圹割を持ちたす。
1,コンストラクタの匕数を指定する
2,匕数で初期化されるプロパティを定矩する

コンストラクラタにより以䞋のようにむンスタンスを生成できたす

val man = Man("Yamada Taro",23)

参考
https://www.youtube.com/watch?v=UswtcJlDZ3I
https://www.kenschool.jp/blog/?p=5634

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?