Scala 学习笔记

这篇博客详细介绍了Scala的基础知识,包括变量定义、类型转换、方法定义、递归、迭代、抽象类、伴生类与对象、case class、接口、集合操作以及隐式转换。还探讨了Scala在JVM上的运行、数据类型的特性以及如何进行泛型和排序操作。此外,还提到了Scala在Java JDBC操作中的应用。
摘要由CSDN通过智能技术生成
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(&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值