CrisのScalaノート(四):演算子

12561 ワード

文書ディレクトリ
  • 4. 演算子
  • 44.1演算子の種類
  • 4.2演算子
  • 4.3関係演算子
  • 4.4論理演算子
  • 4.5割付演算子
  • 4.6ビット演算子
  • 4.7演算子優先度
  • 4.8キーボード入力
  • 4.演算子
    4.1演算子の種類
  • 算術演算子
  • 賦値演算子
  • 比較演算子(関係演算子)
  • 論理演算子
  • ビット演算子
  • 4.2演算子
    var cal = 10 / 3
    println(cal) // 3
    var cal2: Double = 10 / 3
    println(cal2) // 3.0
    var cal3 = 10.0 / 3
    println(cal3) // 3.3333333333333335
    
    println(cal3.formatted("%.2f")) // 3.33         ,        
    
    var cal4 = 10 % 3
    println(cal4) //  1
    

    詳細:
    除算記号「/」の場合、整数除算と小数除算には違いがあります.整数間の除算では、整数部分のみを保持し、小数部分を捨てます.例:var x:Int=10/3、結果は3
    1つの数に対して型を取ると、a%b=a-a/b*bを等価にすることができ、これにより、型を取る本質的な演算(javaの型取り規則と同じ)を見ることができる.
    println(-10 % 3) // -1
    println(10 % (-3)) // 1
    println(-10 % (-3)) // -1
    

    注意:Scalaには+、–オペレータはありません.+=、-=で同じ効果を実現する必要があります.
    小さな練習
    /*       */
    var days = 96
    var weeks = days / 7
    var day = days % 7
    println(s"   ${weeks}   $day  ") //    13   5  
    
    /*     */
    var huashi = 32.4
    var sheshi = 5.0 / 9 * (huashi - 100)
    println(sheshi.formatted("%.2f")) // -37.56
    

    4.3関係演算子
    関係演算子一覧
    細部
    var a = 1.3
    var b = 1.3
    println(a == b) //true
    a = 1.2
    b = 1.2f
    println(a == b) //false
    a = 1
    b = 1.0
    println(a == b) //true
    

    詳細な説明
  • 関係演算子の結果は、Boolean型、すなわちtrue、falseである.
  • 関係演算子からなる式を関係式と呼びます.
  • 比較演算子"="は"="
  • と誤記することはできません.
  • トラップを使用:2つの浮動小数点数を比較する場合、データ型が一致することを保証しなければならない
  • 4.4論理演算子
    一覧図
    Scalaの論理演算子の使用はJavaと一致する
    4.5割付演算子
    一覧図
    ビット単位と&:2つの数のバイナリビットが同じ1であれば、1である.それ以外の場合は0
    ビット単位または|:2つの数のバイナリビットが1である場合、1である.それ以外の場合は0
    ビット別異和^:2つの数のバイナリビットが異なる場合は1;同じ0
    4.6ビット演算子
    小さい練習:2つの数の値をすばやく交換
    var d = 2
    var e = 1
    d = d + e
    e = d - e
    d = d - e
    

    またはビット別または
    var d = 2
    var e = 1
    d = d ^ e
    e = d ^ e
    d = d ^ e
    

    注意:Scalaは三元演算子ではなくif elseで置き換えられます.
    //          
    
    val a = 10
    val b = 20
    
    val max = if (a > b) {
      a
    } else {
      b
    }
    println(max)
    

    4.7演算子優先度
    4.8キーボード入力
    まずJavaがキーボード入力をどのように処理するかを見てみましょう.
    public class Demo {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("     ");
            String name = scanner.next();
            System.out.println("     ");
            int age = scanner.nextInt();
            System.out.println(String.format("   :%s,   :%s", name, age));
        }
    }
    

    スカラがどうやって処理したか見てみましょう
    def main(args: Array[String]): Unit = {
      println("     :")
      val name = StdIn.readLine()
      println("     :")
      val age = StdIn.readShort()
      println(s"   :${name},   :${age}")
    }