为了账号安全,请及时绑定邮箱和手机立即绑定

Scala基础语言api入门学习

标签:
大数据

Scala的变量定义

  1. 变量定义

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

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

https://img1.sycdn.imooc.com//5b92a1a60001e4eb07060356.jpg

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

scala> 8 * 5+2res0: 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.Stringscala> 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都为100val x,y = 100// 声明字符串常量greeting与hello为nullval 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方法。


       作者:撩琼不止        
       出处:https://www.cnblogs.com/codegeekgao/p/9599974.html       
       本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消