Scala-Scala语言基础(二)Scala常用数据类型+Scala变量的申明和使用+Scala函数和方法的使用+Scala的条件表达式
Posted on 2020-05-27 14:52 MissRong 阅读(302) 评论(0) 收藏 举报大数据技术之Scala
======第一篇:Scala编程语言=====
Scala语言基础(二)
1、Scala的常用数据类型
Scala函数的官方文档:https://www.scala-lang.org/api/2.11.8/#package
注意:在Scala中,任何数据都是对象。
例如:
在Java中 1 是基本数据类型。
在scala中 1 是对象。
scala> 1.
!= < >>> doubleValue isNaN isValidShort shortValue toDouble toShort
% << ^ floatValue isNegInfinity isWhole signum toFloat unary_+
& <= abs floor isPosInfinity longValue to toHexString unary_-
* == byteValue getClass isValidByte max toBinaryString toInt unary_~
+ > ceil intValue isValidChar min toByte toLong underlying
- >= compare isInfinite isValidInt round toChar toOctalString until
/ >> compareTo isInfinity isValidLong self toDegrees toRadians |
① 数值类型:
Byte,Short,Int,Long,Float,Double
Byte: 8位有符号数字,从-128 到 127
Short: 16位有符号数据,从-32768 到 32767
Int: 32位有符号数据
Long: 64位有符号数据
例如:
val a:Byte = 10
a+10
得到:res9: Int = 20
这里的res9是新生成变量的名字
val b:Short = 20
a+b
注意:在Scala中,定义变量可以不指定类型,因为Scala会进行类型的自动推导。
② 字符类型和字符串类型:Char和String
对于字符串,在Scala中可以进行插值操作。
需要在前面加入s才可以进行插值操作
注意:前面有个s;相当于执行:"My Name is " + s1
③ Unit类型:相当于Java中的void类型
Unit 类型,相当于Java中的void,就是没有返回值。
小括号代表一个函数,这个函数没有返回值
④ Nothing类型:一般表示在执行过程中,产生了Exception
例如,我们定义一个函数如下:
也就是说当函数调用后出现Nothing,就代表出现Exception
函数的定义:
def 函数名 = 函数实现
2、Scala变量的申明和使用
使用val和var申明常量、变量
例如:scala> val answer = 8 * 3 + 2
可以在后续表达式中使用这些名称
val:定义的值实际是一个常量
要申明其值可变的变量:var
变量 var 和 常量 val
scala> val b : Int = 11
b: Int = 11
常量的值不可以改变
scala> b = 12
<console>:12: error: reassignment to val
b = 12
^
scala> var a : Int = 11
a: Int = 11
变量的值可以改变
scala> a = 12
a: Int = 12
scala自动类型推导:
scala> var a = 11
a: Int = 11
scala> var a = "Hello"
a: String = Hello
scala> val a='s'
a: Char = s
注意:可以不用显式指定变量的类型,Scala会进行自动的类型推导
虽然这样写简单,但是公司为了增加代码的可读性,会要求定义数据类型
3、Scala的函数和方法的使用
函数:是scala的头等公民
1)可以使用Scala的预定义(内置)函数
例如:求两个值的最大值
说明:
_ 相当于Java中的*,代表这个包下所有的东西。
也可以省略类型声明
scala> var a2 = max(2,3)
a2: Int = 3
像这里的a2就是自己定义的变量,而不是Scala定义的。
2)也可以使用def关键字自定义函数
语法:
示例:
注意:没有return语句。函数的最后一句话就是函数的返回值。
上面例子中,有函数的分支,1 和 x*myFactor(x-1) 都有可能是函数的最后一句话。相当于在前面都有return
scala> myFactor(5)
res11: Int = 120
4、Scala的条件表达式
Scala的if/else语法结构和Java或C++一样。
不过,在Scala中,if/else是表达式,有值,这个值就是跟在if或else之后的表达式的值。
求输入的年份是否是闰年
普通闰年:能被4整除但不能被100整除的年份为普通闰年(如 2004年就是闰年,1999年不是闰年)
世纪闰年:能被400整除的为世纪闰年(如 2000年就是世纪闰年 1900年不是世纪闰年)
scala> def isLeapYear(x:Int) = {
| if((x%4==0 && x%100 != 0) || x % 400 ==0) true
| else false
| }
isLeapYear: (x: Int)Boolean
scala> isLeapYear(2008)
res12: Boolean = true
scala> isLeapYear(2009)
res13: Boolean = false