zoukankan      html  css  js  c++  java
  • Scala基础


    image


    数据类型

    描述

    Byte

    8位有符号补码整数。数值区间为 -128 到 127

    Short

    16位有符号补码整数。数值区间为 -32768 到 32767

    Int

    32位有符号补码整数。数值区间为 -2147483648 到 2147483647

    Long

    64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807

    Float

    32 位, IEEE 754标准的单精度浮点数

    Double

    64 位 IEEE 754标准的双精度浮点数

    Char

    16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF

    String

    字符序列

    Boolean

    true或false

    Unit

    表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

    Null

    null

    Nothing

    Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。

    Any

    Any是所有其他类的超类

    AnyRef

    AnyRef类是Scala里所有引用类(reference class)的基类




    使用细节和注意事项

    1) Null类只有一个实例对象,null,类似于Java中的null引用。null可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal: 比如 Int, Float, Char, Boolean, Long, Double, Byte, Short)

    2) Unit类型用来标识过程,也就是没有明确返回值的函数。由此可见,Unit类似于Java里的void。Unit只有一个实例,(),这个实例也没有实质的意义

    3) Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于Nothing是其他任意类型的子类,他还能跟要求返回值的方法兼容。

    4)当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换(隐式转换 implicit conversion)。

    5) (byte, short) 和 char之间不会相互自动转换。byte,short,char 他们三者可以计算,在计算时首先转换为int类型。


    image


    运算符

    1)Scala中是没有三元运算符,因为可以这样简写 : val result = if (flg) 1 else 0

    2)范围数据循环

    for(i <- 1 to 3){

      print(i + " ")

    }

    println()

    ------------------------------------

    for(i <- 1 until 3) {

      print(i + " ")

    }

    println()

    ------------------------------------

    3)循环守卫

    for(i <- 1 to 3 if i != 2) {

      print(i + " ")

    }

    println()

    ------------------------------------

    4)引入变量

    for(i <- 1 to 3; j = 4 - i) {

      print(j + " ")

    }

    ------------------------------------

    5)嵌套循环

    for(i <- 1 to 3; j <- 1 to 3) {

      println(" i =" + i + " j = " + j)

    }

    6)循环返回值

    val res = for(i <- 1 to 10) yield i * 2

    println(res)

    将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字

    7)使用花括号{}代替小括号()

    var retVal = for{ a <- numList
                               if a != 3; if a < 8
                            }yield a

    (1){}和()对于for表达式来说都可以

    (2)for 推导式有一个不成文的约定:当for 推导式仅包含单一表达式时使用圆括号,当其包含多个表达式时使用大括号

    (3)当使用{} 来换行写表达式时,分号就不用写了

    8)scala 的for循环的步长如何控制! [for(i <- Range(1,3,2)]


    9)while和do…while中没有返回值,所以不推荐使用,而是推荐使用for循环


    10)Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数化编程,推荐使用函数式的风格解决break和contine的功能,而不是一个关键字。

    image

    image


    集合(不可变)

    image


    集合(可变)

        image


    多维数组的定义和使用

    //定义

    val arr = Array.ofDim[Double](3,4)

    //赋值

    arr(1)(1) = 11.11

  • 相关阅读:
    CQD(陈丹琦)分治 & 整体二分——专题小结
    [联赛可能考到]图论相关算法——COGS——联赛试题预测
    C++ 线段树—模板&总结
    树形动态规划(树状DP)小结
    树形动态规划(树形DP)入门问题—初探 & 训练
    哈希表(散列表),Hash表漫谈
    随机系列生成算法(随机数生成)
    什么是动态规划算法,常见的动态规划问题分析与求解
    数学之美系列二十四 -- 谈谈动态规划与如何设计动态规划算法
    owasp zap 安全审计工具 功能详解
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/12701122.html
Copyright © 2011-2022 走看看