Scala—— 1.变量

Scala是一门以Java虚拟机(JVM)为运行环境并***将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言***。Scala源代码(.scala)会被编译成Java字节码(.class),然后运行在JVM上,并可以调用现有的Java类库,实现两种语言的无缝对接。Scala单作为一门编程语言来看,非常简洁高效。

变量声明基本语法
var | val 变量名 [: 变量类型] = 变量值

声明变量时,类型***可以省略(编译器自动推导, 即类型推导), 类型确定后,就不能修改,说明Scala是强数据类型语言, 在声明/定义一个变量时,可以使用var或val来修饰,var修饰的变量可以改变,val修饰的变量不可改变,val修饰的变量在编译后,等同于加上final,var 修饰的对象引用可以改变,val修饰的则不可改变,但对象的状态(值)却是可以改变的(比如: 自定义对象、数组、集合等),变量声明时,需要初始值。Scala与Java有着相同的数据类型,在Scala中***数据类型都是对象,也就是说Scala没有Java中的原生类型。Scala数据类型分为两大类 AnyVal(值类型)和AnyRef(引用类型)***,注意不管是***AnyVal还是AnyRef都是对象

根类型***Any是所有类的父类***,Scala中一切皆为对象, A***nyVal(值类型)和AnyRef(引用类型),它们都是Any的子类***,Null类型***是Scala的特别类型,它***只有一个值nu***ll,它是bottom class,是***所有AnyRef类型的子类Nothing类型***也是bottom class,它是***所有类的子类,在开发中通常可以将***Nothing类型的值返回给任意变量或者函数,这里抛出异常使用很多***。

 def function: Nothing = {
    throw new Exception("exception")
  }

低精度的值,向高精度的值自动转换(implicit conversion)隐式转换

1.整型(Int和Long)

Scala各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证Scala程序的可移植性。整型常量/字面量默认为Int类型,声明Long类型常量/字面量时,须后加“l”或者“L”。

2.浮点(Double和Floa)

Scala浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。 Scala的浮点类型常量默认为Double类型,声明Float类型常量时,须后加“f”或者“F”。

3.字符(Char)

单引号 ’ 括起来的单个字符,转义字符 ‘’ ,Char变量可赋整数,输出会按照对应的Unicode字符输出, Char类型是可进行运算,相当于一个整数,因为它都对应有Unicode码。

4.布尔(Boolean)
5.Unit类型

类似于Java里的void。

6.Null类

只有一个实例对象值null,null可以赋值给任意引用类型AnyRef,但是不能赋值给值类型AnyVal。

7.Nothing类

可作为没有正常返回值的方法的返回类型。

8.强制类型转换
val num1: Int = 10 * 3.6.toInt + 6 * 1.5.toInt            
val s1 = a1 + "" 
val s2 = "23"
val num1 = s2.toInt
val num2 = s2.toByte
val num3 = s2.toDouble
val num4 = s2.toLong

确保String类型能够转成有效的数据,比如我们可以把"123", 转成一个整数,但是不能把"Hello"转成一个整数。

val s1 = "5.21"
println(s1.toInt) // error
println(s1.toDouble) //  ok
9.变量标识符的命名规则

首字符为字母,后续字符任意字母和数字,美元符号,可后接下划线_。 数字不可开头操作符(比如=-*/)不能在标识符中间和最后,用反引号’…'包括的任意字符,即使是关键字(scala有39个关键字)也可以做标识符。

首字符为操作符(比如+ - * / ),后续字符也需跟操作符 ,至少一个。

val ++ = "hello,world!"
println(++)
 
val -+*/ = 90 //ok
println("res=" + -+*/)
var `true` = "hello,scala!"
println("内容=" + `true`)
 
val Int = 99.78
println("Int=" + Int)
10. Scala的关键字(39个)

package, import, class, object, trait, extends, with, type, forSome
private, protected, abstract, sealed, final, implicit, lazy, override
try, catch, finally, throw
if, else, match, case, do, while, for, return, yield
def, val, var
this, super
new
true, false, null
————Blueicex 2020/2/15 18:06 blueice1980@126.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值