English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin 演算子

Kotlin には算術、割り当て、比較演算子などを実行できる演算子セットがあります。これらの演算子の使用方法について学びます。

演算子は、操作数(変数と値)に対して演算を行う特別な記号(文字)です。例えば、+ は加算演算子です。

ではKotlin 変数この記事では、変数の宣言と値の割り付けについて学びました。今度は、演算子を使用して様々な操作を行う方法を学びましょう。

算術演算子

以下は Kotlin における算術演算子の一覧です:

Kotlin 算術演算子
演算子説明
+加法演算子(文字列結合にも使用されます)
-減法演算子
*乘法演算子
/除法演算子
取模演算子

例:算術演算子

fun main(args: Array<String>) {
    val number1 = 12.5
    val number2 = 3.5
    var result: Double
    result = number1 + number2
    println("number1 + number2 = $result)
    result = number1 - number2
    println("number1 - number2 = $result)
    result = number1 * number2
    println("number1 * number2 = $result)
    result = number1 / number2
    println("number1 / number2 = $result)
    result = number1 % number2
    println("number1 % number2 = $result)
}

プログラムを実行したときの、出力は以下の通りです:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

+ 演算子は、String値を連結するためにも使用できます。文字列を結合します。

例:文字列の結合

fun main(args: Array<String>) {
    val start = "Talk is cheap.""
    val middle = "Show me the code.""
    val end = "- Linus Torvalds"
    val result = start + middle + end
    println(result)
}

プログラムを実行したときの、出力は以下の通りです:

Talk is cheap. Show me the code. - Linus Torvalds

算術演算子は実際にどのように動作するのでしょうか?

例えば、以下を使用していると仮定します + 算術演算子は数字 a と b を足します。

バックグラウンドで、式 a + b が a.plus(b) メンバ関数を呼び出します。plus 演算子は String 値およびその他の基本データ型(Char および Boolean除く)。

// + 基本データ型の演算子
operator fun plus(other: Byte): Int
operator fun plus(other: Short): Int
operator fun plus(other: Int): Int
operator fun plus(other: Long): Long
operator fun plus(other: Float): Float
operator fun plus(other: Double): Double
// 文字列の結合に
operator fun String?.plus(other: Any?): String

さらに、以下を使用できます + 演算子はユーザー定義の型(オブジェクトなど)を処理するために plus() 関数をオーバーロードして処理します。

推薦の読書: Kotlin 演算子オーバーロード

これは算術演算子および対応する関数の一覧です:

表現関数名使用法
a + b加えるa.plus(b)
a-b減るa.minus(b)
a * b乗る
a.times(b)
a / b除す
a.div(b)
a%b余数を取るa.mod(b)

代入演算子

代入演算子は変数に値を代入するために使用されます。私たちはすでにシンプルな = 代入演算子を使用していました。

val age = 5

ここでは、= 演算子を使用して 5 変数 age に代入されます。

以下はすべての代入演算子および対応する関数の一覧です:

表現に等しい使用法
a + = ba = a + ba.plusAssign(b)
a-= ba = a-ba.minusAssign(b)
a * = ba = a * ba.timesAssign(b)
a / = ba = a / ba.divAssign(b)
a%= ba = a%ba.modAssign(b)

例:代入演算子

fun main(args: Array<String>) {
    var number = 12
    number *= 5   // number = number*5
    println("number  = $number")
}

プログラムを実行したときの、出力は以下の通りです:

number = 60

一元前缀および増加/減少演算子

これは一元演算子であり、その意味および対応する機能の表です:

演算子説明表現使用法
+一元加+aa.unaryPlus()
-一元減-aa.unaryMinus()
不是(値を反転)!aa.not()
++増加:値を加える1++aa.inc()
--減少:値を減らす1--a
a.dec()

例:一元演算子

fun main(args: Array<String>) {
    val a = 1
    val b = true
    var c = 1
    var result: Int
    var booleanResult: Boolean
    result = -a
    println("-a = $result")
    booleanResult = !b
    println("!b = $booleanResult")
    --c
    println("--c = $c")
}

プログラムを実行したときの、出力は以下の通りです:

-a = -1
!b = false
--c = 0

比較演算子および相等演算子

これは相等および比較演算子であり、その意味および対応する関数のリストです:

演算子説明表現使用法
>大于a> ba.compareTo(b)> 0
<小于a <ba.compareTo(b)<0
> =大于 或 等于a> = ba.compareTo(b)>= 0
<=小于 或 等于a <= ba.compareTo(b)<= 0
==等于a == ba?.equals(b)?:(b === null)
!=不等于a!= b!(a?.equals(b)?:(b ===null))

比較および等価演算子は制御フローに使用されます、例えば:if 表現when表現 および ループ

例:比較および等価演算子

fun main(args: Array<String>) {
    val a = -12
    val b = 12
    //使用する大于演算子
    val max = if (a > b) {
        println("a大于b")
        a
    } else {
        println("b大于a")
        b
    }
    println("max = $max")
}

プログラムを実行したときの、出力は以下の通りです:

bがaより大きい
max = 12

論理演算子

Kotlinには論理演算子が2つあります:|| と &&

これは論理演算子であり、その意味と対応する関数の表です。

演算子説明表現対応する関数
||もしもどのブール式もtrueならtrue
(a>b)||(a<c)(a>b)or(a<c)
&&すべての布尔値表达式がtrueの場合、trueになります(a>b)&&(a<c)(a>b)and(a<c)

注意:orとandは中置表現をサポートする関数です。

論理演算子は、制御フローを制御するために使用されます。例えば、 if表現when表現 および ループ

例:論理演算子

fun main(args: Array<String>) {
    val a = 10
    val b = 9
    val c = -1
    val result: Boolean
    // resultがtrueの場合は、最大のものです
    result = (a>b) && (a>c) // result = (a>b) and (a>c)
    println(result)
}

プログラムを実行したときの、出力は以下の通りです:

true

in演算子

in演算子は、オブジェクトが集合に属しているかどうかを確認するために使用されます。

演算子表現使用法
in
a in bb.contains(a)
!in
a !in b
!b.contains(a)

例:in演算子

fun main(args: Array<String>) {
    val numbers = intArrayOf(1, 4, 42, -3])
    if (4 in numbers) {
        println("numbers配列は以下を含んでいます 4.")
    }
}

プログラムを実行したときの、出力は以下の通りです:

numbers配列は以下を含んでいます  4.

インデックスアクセス演算子

以下は、Kotlinで特定の関数を持つインデックスアクセス演算子を使用する例です。

表現使用法
a[i]a.get(i)
a[i, n]a.get(i, n)
a[i1, i2, ..., in]a.get(i1, i2, ..., in)
a[i] = ba.set(i, b)
a[i, n] = ba.set(i, n, b)
a[i1, i2, ..., in] = ba.set(i1, i2, ..., in, b)

例:インデックスアクセス演算子

fun main(args: Array<String>) {
    val a = intArrayOf(1, 2, 3, 4, - 1])
    println(a[1])   
    a[1]= 12
    println(a[1])
}

プログラムを実行したときの、出力は以下の通りです:

2
12

invoke演算子

以下は、Kotlinで特定の関数を持つinvoke演算子を使用する例です。

表現翻訳
a()a.invoke()
a(i)a.invoke(i)
a(i1, i2, ..., in)a.inkove(i1, i2, ..., in)
a[i] = ba.set(i, b)

Kotlinでは、括弧がinvokeメンバー関数の呼び出しに変換されます。

ビット演算

Javaとは異なり、Kotlinにはビットおよびシフト演算子がありません。これらのタスクを実行するために、様々な機能(中間記号のサポート)を使用します:

  • shl - シグネチャ左シフト

  • shr - シグネチャ右シフト

  • ushr - 無符号右シフト

  • and - ビットと

  • or - ビット或

  • xor - ビット異或

  • inv - ビット反転

こちらのページにアクセスして、Kotlinでのビット演算もっと情報

また、Javaとは異なり、Kotlinには三項演算子がありません。