scala部署好以后我们来进行基础学习
val与var
scala> val name:String = "17"
name: String = 17
scala> name = "dashu"
<console>:12: error: reassignment to val
name = "dashu"
^
scala>
报错分析:
re 重新
assign 分配
ment 名词后缀
意思是val定义的不能重新赋值
scala> var money:Int = 10000
money: Int = 10000
scala> money = 20000
money: Int = 20000
scala>
分析:用var重新赋值就不会报错
总结:在scala要定义一个名称肯定要的东西肯定用val或者var,只有这两种
简写:
scala> val name = "big tree"
name: String = big tree
scala> var money = 10000
money: Int = 10000
说明:名字后边的数据类型在=后边有值的情况下可以省略,也就是说scala里的数据类型是可以推到的
数据类型:
Byte Char
short
常用:Int Long Float Double Boolean
数据类型的应用
数据太长,Int类型装不下,需要用long类型,在数值以后加一个l就可以判别是long类型了
场景一
scala> val money = 10020202020202020
<console>:1: error: integer number too large
val money = 10020202020202020
^
scala> val money = 10020202020202020l
money: Long = 10020202020202020
scala>
场景二
scala> val b:Float = 1.2
<console>:11: error: type mismatch; ##提示类型不匹配
found : Double(1.2) ##找到的是double类型
required: Float ##需要的是float类型
val b:Float = 1.2
^
解决,在数值后边加一个f(大小写都可以),即可判定是float类型
scala> val b:Float = 1.2f
b: Float = 1.2
scala>
场景3
scala> val a = 10.asInstanceOf[Double]
a: Double = 10.0
asInstanceOf 把10整数转为10.0double类型
scala> val b = 10.isInstanceOf[Int]
b: Boolean = true
scala> val b = 10.isInstanceOf[Float]
b: Boolean = false
scala>
isInstanceOf 判断数据类型
函数
函数图解
eg:
package FunctionApp ##包名 object FunctionApp { def main(args: Array[String]): Unit = { //定义的主类 println(sum(2,5))//函数的调用 sayhello //函数的调用 sayworld("zz") //函数的调用 } //===========================以下是定义函数=========================================== def sum(x: Int, y: Int): Int = {//定义了一个求和函数,要传入两个参数 x + y } def sayhello():Unit ={ //定义了一个函数,不需要传入任何参数 println("若泽数据欢迎您...") } def sayworld(name:String):Unit ={//定义了一个函数需要输入一个字符串类型的参数,也就是在输入参数的时候需要加上"" println("若泽数据欢迎您..."+name) } }
执行结果:
7 若泽数据欢迎您... 若泽数据欢迎您...zz
循环表达式
to的用法
scala> val z = 1 to 10
z: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
分析:
1.左闭右闭[1,10]
2.Range.Inclusive 底层调用,这个Inclusive就相当于左闭右闭
3.因为考虑到底层调用的是Range,那我没若果直接用Range,会怎么呢?如下所示
scala> Range(1,10)
res2: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
Range底层调用的是Range,但是后边没有Inclusive,结果是1-9,也就是左闭右开
scala> 1 until 10
res1: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
分析:until和range是一样的
步长
scala> Range(10,1,-1)
res4: scala.collection.immutable.Range = Range(10, 9, 8, 7, 6, 5, 4, 3, 2)
scala> Range(1,10,3)
res1: scala.collection.immutable.Range = Range(1, 4, 7)
Range的第3个参数就是步长
scala> Range(1,10,0)
java.lang.IllegalArgumentException: step cannot be 0.
at scala.collection.immutable.Range.<init>(Range.scala:86)
at scala.collection.immutable.Range$.apply(Range.scala:439)
... 32 elided
当步长为0时会报错,说不能为零,那这句报错的来源是什么呢?
我们去查看一下Rang.scala,从下边的图片中可以看出,报错内容来自于红色框内的。条件是,当步长等于0时报错。