Scala基本数据类型和运算符

2023-05-28 0 601

一、数据类别二、字面上量三、操作符

一、数据类别

1.1类别全力支持

Scala 保有附注右图的数据类别,当中 Byte、Short、Int、Long 和 Char 类别泛称为有理数类别,有理数类别加之 Float 和 Double 泛称为值类别。Scala 值类别的值域覆盖范围和 Java 相关联类别的值域覆盖范围完全相同。

Scala基本数据类型和运算符

1.2表述表达式

Scala 的表达式分成三种,val 和 var,其差别如附注右图:

val :近似于 Java 中的 final 表达式,除非调用就无法被再次表达式;var :近似于 Java 中的非 final 表达式,在整座新闻稿周期性内 var 能被再次表达式;

scala> val a=1a: Int =1scala> a=2:8: error: reassignment to val //不容许再次表达式scala> var b=1b: Int =1scala> b=2b: Int =2

1.3类别推测

在上面的模拟中,并没新闻稿 a 是 Int 类别,但流程却是把 a 当作 Int 类别,这是 Scala 的类别推测。在绝大多数情况下,你都无须详述表达式的类别,流程会手动展开推测。假如你想隐式的新闻稿类别,能在表达式前面选定,如附注右图:

scala> val c:String=”hello scala”c: String = hello scala

1.4 Scala正则表达式

在 scala 配置文件中,假如没对输出的值选定表达式的表达式,则输出的值预设会表达式给 resX(当中 X 是两个从0 已经开始递减的有理数),res 是 result 的简写,那个表达式能在前面的句子中展开提及。

scala>5res0: Int =5scala> res0*6res1: Int =30scala> println(res1)30

二、字面上量

Scala 和 Java 字面上量在使用上很多相似,比如都使用 F 或 f 表示浮点型,都使用 L 或 l 表示 Long 类别。下文主要介绍两者差异部分。

scala>1.2res0: Double =1.2scala>1.2fres1: Float =1.2scala>1.4Fres2: Float =1.4scala>1res3: Int =1scala>1lres4: Long =1scala>1Lres5: Long =1

2.1有理数字面上量

Scala 全力支持10进制和16进制,但不全力支持八进制字面上量和以0 开头的有理数字面上量。

scala>012:1: error: Decimal integer literals may not have a leading zero.(Octal syntax is obsolete.)

2.2字符串字面上量

1.字符字面上量

字符字面上量由一对单引号和中间的任意 Unicode 字符组成。你能隐式的给出原字符、也能使用字符的 Unicode 码来表示,还能包含特殊的转义字符。

scala>\u0041res0: Char = Ascala>ares1: Char = ascala>\nres2: Char =

2.字符串字面上量

字符串字面上量由双引号包起来的字符组成。

scala>”hello world”res3: String = hello world

3.原生字符串

Scala 提供了”””…”””语法,通过三个双引号来表示原生字符串和多行字符串,使用该种方式,原生字符串中的特殊字符不会被转义。

scala>”hello \tool”res4: String = hello oolscala>”””hello \tool”””res5: String = hello \toolscala>”””hello world”””res6: String =helloworld

2.3符号字面上量

符号字面上量写法为:标识符,这里标识符能是任何字母

注意:具有完全相同 name 的符号字面上量一定指向同两个 Symbol 对象,不同 name 的符号字面上量一定指向不同的 Symbol 对象。

scala> val sym =ID008sym: Symbol =ID008scala> sym.nameres12: String = ID008

2.4插值表达式

Scala 全力支持插值表达式。

scala> val name=”xiaoming”name: String = xiaomingscala> println(s”My name is $name,Im ${2*9}.”)My name is xiaoming,Im 18.

三、操作符

Scala 和其他语言一样,全力支持绝大多数的操作操作符:

算术操作符(+,-,*,/,%)关系操作符(==,!=,>,<,>=,<=)逻辑操作符(&&,,!,&,)位操作符(~,&,,^,<<,>>,>>>)表达式操作符(=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,=)

以上操作符的基本上使用与 Java 类似,下文主要介绍差异部分和注意事项。

3.1操作符即方法

Scala 的面向对象比 Java 更加纯粹,在 Scala 中一切都是对象。所以对于1+2,实际上是调用了 Int 类中名为+ 的方法,所以1+2,也能写成1.+(2)。

scala>1+2res14: Int =3scala>1.+(2)res15: Int =3

Int 类中包含了多个重载的+ 方法,用于分别接收不同类别的参数。

Scala基本数据类型和运算符

3.2逻辑操作符

和其他语言一样,在 Scala 中&&,的执行是短路的,即假如左边的表达式能确定整座结果,右边的表达式就不会被执行,这满足绝大多数使用场景。但假如你需要在无论什么情况下,都执行右边的表达式,则能使用&或 代替。

3.3表达式操作符

在 Scala 中没 Java 中的++和 –操作符,假如你想要实现类似的操作,只能使用+=1,或者-=1。

scala> var a=1a: Int =1scala> a+=1scala> ares8: Int =2scala> a-=1scala> ares10: Int =1

3.4操作符优先级

操作符的优先级如附注右图:优先级由上至下,逐级递减。

Scala基本数据类型和运算符

在表格中某个字符的优先级越高,那么以那个字符打头的方法就保有更高的优先级。如+ 的优先级大于<,也就意味则+ 的优先级大于以<开头的<<,所以2<<2+2, 实际上等价于2<<(2+2):

scala>2<<2+2res0: Int =32scala>2<<(2+2)res1: Int =32

3.5对象相等性

假如想要判断两个对象是否相等,能使用==和 !=,这两个操作符能用于所有的对象,包括 null。

scala>1==2res2: Boolean = falsescala> List(1,2,3)==List(1,2,3)res3: Boolean = truescala>1==1.0res4: Boolean = truescala> List(1,2,3)==nullres5: Boolean = falsescala> null==nullres6: Boolean = true

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务