Scala(一):
Scala 运行在JVM之上,兼容java
Scala 没有java中int double等这些原声数据类型,都是以大写开头的Int Double Float
定义:
val | var 名称[:数据类型] =xxx
eg: val name:String = “wzj”
Scala 中有类型推倒的功能 所以数据类型可以省略
eg: val name = “wzj”
Float类型定义数值后面需要加f
val b:Float = 1.1f
Long类型数值后面需要加L
val b:Long = 10L
res.asInstanceOf[Type] 数据类型转换
res.isInstanceOf[Type] 数据类型判断
方法定义:
def 函数名称([参数:参数类型],…)[:返回值类型=]{
}
参数可以为空,也可以多个,多个以逗号分隔,不定义返回值默认Unit没有返回值
返回值不需要return,默认最后一行为返回值
eg: def add(a:Int,b:Int):Int{
a+b
}
递归类型必须定义返回值:
def muit(i:Int):Int={
if(i<=1){
1
}else{
i*muit(i-1)
}
}
Scala(二):
迭代:
to:左闭右闭
scala> 1 to 10
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> 1.to(10)
res1: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Range:左闭右开
scala> range(1,10)
<console>:12: error: not found: value range
range(1,10)
^
scala> Range(1,10)
res3: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
scala> Range(1,10,3)
res4: scala.collection.immutable.Range = Range(1, 4, 7)
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
scala>
foreach(x=>f(x)):
Array(“wzj”,“qwe”,“zxc”).foreach(x=>println(x))
for:
方式一:
for(i <- Array){
println(i)
}
方式二 通过下标访问:
for(i <- 0 to array.length-1){
println(array(i))
}
方式三 加条件:
for(i <- 1 to 10 if i%2==0){
print(i)
}
yield 推导:
var result = for{a <- 2 to sq if x%a==0}yield a
可变参数 :
:_ 特殊符号
在可变参数的函数中传参使用range类型的需要后面加 :_*
def sum(i: Int*) = {
var a = 0
for(num <- i){
a += num
}
a
}
def main(args: Array[String]): Unit = {
println(sum(1,5,9))
println(sum(1,2,3,4,5))
println(sum(1 to 10 :_*))
}
占位符 _ 各种类型的默认值
scala> var name:String=_
name: String = null
scala> var name:Int=_
name: Int = 0
scala> var name:Float=_
name: Float = 0.0
scala> var name:Double=_
name: Double = 0.0
scala> var name:Long=_
name: Long = 0
主构造器&附属构造器:
package wzj
object constructorApp {
def main(args: Array[String]): Unit = {
val per = new person(&#