大数据技术之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

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3