zoukankan      html  css  js  c++  java
  • Scala基础语言api入门学习

    Scala的变量定义

    1. 变量定义

    声明一个val变量类似与java的 public static final String 一致,一旦初始化不能改变,和java的泛型类似,Scala会帮我们进行类型推断

    如下图所示,一个Scala大致如以下结构:

    下面使用shell键入一个命令进行数字运算:

    scala> 8 * 5+2
    res0: Int = 42
    
    可以使用res0,可以在后续继续操作这个变量
    scala> 0.5 * res0
    res1: Double = 21.0
    
    进行字符串的拼接
    scala> "hello,"+res1
    res2: String = hello,21.0
    
    可以使用res2调用方法,可以使用Tab键补全,例如输入res2.to可以提示如下选项:
    tail        takeWhile   toBuffer      toFloat        toIterator    toMap     toStream        toVector
    tails       to          toByte        toIndexedSeq   toList        toSeq     toString        transpose
    take        toArray     toCharArray   toInt          toLong        toSet     toTraversable   trim
    takeRight   toBoolean   toDouble      toIterable     toLowerCase   toShort   toUpperCase
    输入的内容被快速的编译为字节码,然后将这段字节码交由java虚拟机执行,这个过程称为读取-求助-打印-循环,即REPL(Read-Eval-Print Loop)
    

    声明不可变变量:

    scala> val helloWorld="hello World"
    helloWorld: String = hello World
    
    // 指定String类型进行创建
    scala> val helloWorld:String="Hello World"
    helloWorld: String = Hello World
    
    //String其实就是java.lang.String
    scala> val helloWorld:java.lang.String="Hello World"
    helloWorld: String = Hello World
    

    声明可变变量使用var

    scala> var variable:String="mutable variable"
    variable: String = mutable variable
    
    scala> variable="haha"
    variable: String = haha
    

    下面使用延迟加载变量,相当于懒加载,初始化创建并不进行赋值当使用的时候才真正赋值

    scala> lazy val scala="Hello Scala"
    scala: String = <lazy>
    
    //在真正使用时被赋值
    scala> scala
    res1: String = Hello Scala
    

    在Scala中变量和函数的类型总是写在变量或函数名称的后面,java声明变量一般为:String hello ,而Scala为hello:String
    也可以将多个值或变量放在一起声明:

    // 声明x与y都为100
    val x,y = 100
    // 声明字符串常量greeting与hello为null
    val greeting,hello : String = null
    

    Scala常用数据类型和java一样,Scala也有7种数值类型:Byte,Char,Short,Int,Long,Float,Double以及一个Boolean类型,跟java不同的是这些类型为类,Scala并不刻意区分基本类型和引用类型可以对数字执行方法。

    // 产生字符串
    scala> 1.toString
    res0: String = 1
    
    // 类似与遍历
    scala> 1.to(10)
    res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    Scala不需要包装类型,它会自动进行基本类型与包装类型转换。Scala提供了RichInt,RichDouble,RichChar进行--Int,Double,Char中的转换
    
    1. 算术和操作符重载
    > + - * / %等操作符完成,位操作符&|^ >> <<也一样,操作符实际上是方法。如a.+(b) 通常来说可以使用 a 方法 b 作为简写 a.方法(b)这里的方法是一个带有两个参数的方法(一个隐式和一个显式)例如1.to(10) 可以写成1 to 10 Scala并没有提供++和--操作,我们需要使用+=1或者-=1
    在Scala中使用数学函数(min 或pow)更为简单-你不需要从某个类调用它的静态方法。sqrt(2),pow(2,4),min(2,pi)import scala.math_ 注意:_类似java中的* Scala没有静态的方法,它有个类似的特性,叫做伴生对象,其方法就跟java中的静态方法一样。举例来说,BigInt类的BigInt伴生对象有一个生成指定位数的随机素数的方法probablePrime:
    
    scala> BigInt.probablePrime(100,scala.util.Random)
    res1: scala.math.BigInt = 1181989405512407462125610683643
    
    
    1. apply方法
    scala> "hello"(4)
    res0: Char = o
    "hello".apply(4) 简写为“hello”(4)同理还有很多类似用法例如,Array(4,4,9,16)会返回一个数组,用的就是Array伴生对象的apply方法。
    
  • 相关阅读:
    Out of Hay POJ
    Sum Problem hdu 1001
    N! hdu 1042
    线性表的链式表示和实现(插入删除建空合并)
    NYOJ 1007
    NYOJ 954
    NYOJ 998
    NYOJ 455
    NYOJ 975
    数据结构复习0---线性表
  • 原文地址:https://www.cnblogs.com/codegeekgao/p/9599974.html
Copyright © 2011-2022 走看看