Scala基础

变量、基础数据类型
Scala中变量不需要显示指定类型,但需要提前声明。这可以避免很多命名空间污染问题。
Scala有一个很强大的类型自动推导功能,它可以根据右值及上下文自动推导出变量的类型。

scala> val a = 1
a: Int = 1

scala> val b = true
b: Boolean = true

scala> val c = 1.0
c: Double = 1.0

scala> val a = 30 + "岁"
a: String = 30岁

*注:函数式编程有一个很重要的特性:不可变性。Scala中除了变量的不可变性,它还定义了一套不可变集合scala.collection.immutable._。

val代表这是一个final variable,它是一个常量。定义后就不可以改变,相应的,使用var定义的就是平常所见的变量了,是可以改变的。从终端的打印可以看出,Scala从右值自动推导出了变量的类型。Scala可以如动态语言似的编写代码,但又有静态语言的编译时检查。这对于Java中冗长、重复的类型声明来说是一种很好的进步。

*注:在REPL中,val变量是可以重新赋值的,这是`REPL`的特性。在平常的代码中是不可以的。

基础数据类型
Scala中基础数据类型有:Byte、Short、Int、Long、Float、Double,Boolean,Char、String。和Java不同的是,Scala中没在区分原生类型和装箱类型,如:int和Integer。它统一抽象成Int类型,这样在Scala中所有类型都是对象了。编译器在编译时将自动决定使用原生类型还是装箱类型。

字符串
Scala中的字符串有3种。
分别是普通字符串,它的特性和Java字符串一至。
连线3个双引号在Scala中也有特殊含义,它代表被包裹的内容是原始字符串,可以不需要字符转码。这一特性在定义正则表达式时很有优势。
还有一种被称为“字符串插值”的字符串,他可以直接引用上下文中的变量,并把结果插入字符串中。

scala> val c2 = '杨'
c2: Char = 杨

scala> val s1 = "羊八井花园"
s1: String = 羊八井花园

scala> val s2 = s"羊八井花园${c2}景"
s2: String = 羊八井花园

scala> val s3 = s"""羊八井花园"工程师"\n${c2}景是江津人"""
s3: String =
羊八井花园"工程师"
杨景是江津人

运算符和命名
Scala中的运算符其实是定义在对象上的方法(函数),你看到的诸如:3 + 2其实是这样子的:3.+(2)。+符号是定义在Int对象上的一个方法。支持和Java一至的运算符(方法):

*注:在Scala中,方法前的.号和方法两边的小括号在不引起歧义的情况下是可以省略的。这样我们就可以定义出很优美的DSL

==、!=:比较运算
!、|、&、^:逻辑运算
<<、>>:位运算
注意
在Scala中,修正了(算更符合一般人的常规理解吧)==和!=运算符的含义。在Scala中,==和!=是执行对象的值比较,相当于Java中的equals方法。而对象的引用比较需要使用eq和ne两个方法来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值