【Scala】基础1:处理数据

(一)几个基本概念:字面量、值、变量和类型

1、字面量:直接出现在源代码中的数据,如数字5、字母A、文本“hello world”

2.、值:是一个不可变的、有类型的存储单元。可以在定义值是为它指定数据,不过不允许重复赋值

   如果定义一个值时未指定类型,编译器可以从赋值判断这个值的类型,这个过程称为类型推导一般只有在不会削弱代码可读性的情况下才使用类型推导。

   如果定义一个值时指定了类型,而这个类型与初始值不兼容,就会得到一个编译错误

   定义一个名为x、类型为Int的值,并将它赋值为字面量5:val x:Int = 5或val x=5

3、变量:是一个可变的、有类型的存储单元。可以在定义变量时为它指定数据,而且可以在任何时间重新赋值,尽管变量可以重新赋值,但是不能改变为它指定的类型

    定义一个名为x、类型为double的值,并将它赋值为字面量2.72:

var x:Double = 2.72 
x = 355.0/113.0

4、类型:是所处理数据的种类,这是对数据的一个定义和分类。

(二)命名规则

       Scala命名规则和Java大体相同,可以使用字母、数字、下划线和一些特殊的操作符字符,不过scala可以使用关键字命名,关键字需要包含在一对反引号中

(三)数据类型

scala包括数值类型和非数值类型,可以用来定义值和变量

数值数据类型包括:Byte、Short、Int、Long、Float和Double

非数值数据类型包括:Char、Boolean和String

数值类型:

Scala支持根据类型等级自动将数字从一种类型转换到另一种类型(从低等级到高等级)

举例:

val b:Byte = 10

val s:Short = b

val d:Double = s

但Scala不允许从较高等级类型自动转换到较低等级类型。

举例:

val l : Long = 20

val i : Int = l    

会导致一个错误

可以选择toXXX方法手动完成类型间的转换,所有数值类型都有这样一个方法。尽管转换到一个较低等级类型有可能导致丢失数据,但是

如果你很清楚数据与较低等级类型兼容,这个类型转换就会很有用。

举例: 

val l:Long = 20

val i:Int = l.toInt

非数值类型:

Char字面量使用单引号,举例: 

 val c = 'A'

 val l:Int = c

 val t:Char = 116

Boolean只有两个值:truefalse

举例: 

val isTrue = !true

val unequal = (5 != 6)

val definitelyFalse = false && unequal

String:scalaString建立在JavaString基础上,另外增加了多行字面量和字符串内插等特有的特性。

String字面量要使用双引号,特殊字符要用反斜线转义

举例: 

 val hello = "hello world"

 val signature = "With Regards,\nYour friend"

String类型也支持使用数学运算符,可以使用相等运算符(==)比较两个String值,与Java不同,相等操作符(==)会检查真正的相等性,而不是对象引用相等性。举例: 

val greeting = "Hello,"+"World"

val matched = (greeting == "Hello,World")

val theme = "Na" * 16 +"Batmanl"    //*16表示输出16个NA

String可以用三重引号创建多行String,多行字符串是字面量,所以如果其中使用了反斜线,不要认为它是一个特殊字符的开头。

举例:

val greeting = """She suggested reformatting the file

| by replacing tabs\t with newlines\n;

|"Why do that?",he asked."""

字符串内插:

       要在一个String中加入值或变量,更直接的一种方法——字符串内插。

       Scala的字符串内插记法是在字符串的第一个双引号前面增加一个“s”前缀,然后可以使用美元符($)指示外部数据的引用。如果引用中有非字字符,或者如果引用与周围文本无法区分,就需要使用可选的大括号。

举例:

val approx = 355/113f

println(s"Pi,using 355/113,is about $approx")

val item = "apple"
s"How do you like them ${item}s?"
s"Fish n chips n vinegar,${"pepper "*3}salt"
 
val item = "apple"
f"I wrote a new $item%.3s today"
f"Enjoying this $item ${355/113.0}%.5f times today"

(四)元组

一个包含两个或多个值的有序容器,这些值可以有不同的类型。

在关系型数据库中,表中的一行可以认为是一个元组,作用只是作为多个值的容器。

创建元组时,值之间要用逗号分隔,并用一对小括号包围。

举例:val info = (5,"Korben",true)

可以根据元素的索引(1开始)访问元组中的单个元素

举例:val name = info._2

创建一个大小为2的元组,另一种候选形式是利用关系操作符(->),这是一种表示元组中键-值对的流行的快捷方式,访问元素仍然使用下划线加索引

举例: 

val red = "red" -> "oxff0000"

val reversed = red._2 -> red._1

猜你喜欢

转载自blog.csdn.net/hr786250678/article/details/86235008