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方法。

项目中我们一般这样使用apply方法:如创建一个Student对象,我们这样做:

/**
  * 学生类
  */
class Student extends Serializable {
  /**
    * 姓名
    */
  @BeanProperty // 此注解实现了成员变量的setter方法和getter方法
  var name: String = _
  /**
    * 年龄
    */
  @BeanProperty
  var age: Int = _
  /**
    * 所属年级
    */
  @BeanProperty
  var grade: String = _

// 重写的toString方法
  override def toString = s"Student($name, $age, $grade)"
}
// 伴生对象
object Student {
// 这里有点类似java中的空参构造器初始化后给各个成员变量赋值的操作
  def apply(name: String, age: Int, grade: String): Student = {
    val student = new Student
    student.name = name
    student.age = age
    student.grade = grade
    student
  }
// 运行的主函数,类似于java的main方法
  def main(args: Array[String]): Unit = {
    val s = Student("张三",23,"高三")
    println(s) // 将输出 Student(张三, 23, 高三)
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值