Scala学习笔记1

本文的目标在于帮助熟悉Java的同学可以快速掌握Scala的特殊语法

HelloWorld

package chapter01
object HelloWorld {
  def main(args: Array[String]): Unit = {
      println("HelloWorld")
  }
}
  1. object关键字用于定义Scala的伴生对象,伴生对象类似于java的静态类,用于定义静态方法和静态变量
  2. 语句完结不用加分号

变量

object Main {
  val school:String = "aaa"
  def main(args: Array[String]): Unit = {
    var bb = 22
  }
}
  1. var定义变量,val定义常量,val类似java里的final
  2. 变量类型支持自动推导
def main(args: Array[String]): Unit = {
      def getName():Unit = {
        println("aaa")
      }
      val name = getName()
      println(name)
      val obj:String = null
      def m2():Nothing = {
        throw new NullPointerException
      }
      m2()
  }
  1. Unit类似Void
  2. null兼容java null,表示对象的空值
  3. Nothing 是所有类的子类,用于兼容抛出Exception
def main(args: Array[String]): Unit = {
    val name = "tom"
    val age = 10
    val num = 2.121221
    println(name + " age: " + age)
    printf("%s age: %d \n",name,age)
    println(name * 3)
    println(s"$name age: $age")
    println(f"num:${num}%2.2f")
    println(raw"num:${num}")
    println(
      s"""
        |select
        |  *
        |from
        |  ${name}
        |where
        |  a = 1
        |""".stripMargin)
  }
  1. +号连接,同java一样
  2. s“”模板字符串嵌入变量
  3. printf c++方式
  4. %进行format
  5. s""" + |的方式连接多行字符串
  6. *号可以复制字符串
def main(args: Array[String]): Unit = {
    val a1:Byte = 1
    val a2:Long = 2
    val r:Int = (a1+a2).toInt
    val s1 = "aaa"
    val s2 = "aaa"
    if (s1 == s2) {
      println("true")
    }
    if (!(s1 eq s2)){
      println("false")
    }
  }
  1. toInt 强制转换为Int 其他类型类似
  2. 字符串可以直接 == ,类似java的equal
  3. eq类似java的 == ,对比地址
def main(args: Array[String]): Unit = {
    val +=- = "+=-"
    println(+=-)
    val `if` = "if"
    println(`if`)
  }
  1. 纯符号可以当变量
  2. 反引号可以把关键字设为变量

条件&循环

def main(args: Array[String]): Unit = {
    val a = if(true) {
      17
    }else {
      18
    }
}
  1. if可以直接赋值
def main(args: Array[String]): Unit = {
   for(i <- 1 to 3) {
      println(i)
    }
    println("=================")
    for(i <- Range(1,3)) {
      println(i)
    }
    println("=================")
    for(i <- 1 until 3){
      println(i)
    }
    println("=================")
    for(i <- Array(2,2,3,4) if i != 2) {
      println(i)
    }
    println("=================")
    for(i <- 1 to 8 by 2) {
      println(i)
    }
    println("=================")
    for(i <- 1 to 8 by 2 reverse) {
      println(i)
    }
    println("=================")
    for(i <- 1 to 8;j <- 1 to 8) {
      println(s"$i:$j")
    }
}
  1. to 是闭区间
  2. until是左闭右开
  3. scala没有continue语法,使用嵌套if跳过
  4. by表示步长
  5. reverse表示倒序
  6. 多个for循环可以合并
def main(args: Array[String]): Unit = {
    Breaks.breakable(
      for(i <- 1 to 10) {
        println(s"i=$i")
        if(i == 3){
          Breaks.break()
        }
      }
    )
  }
  1. scala没有break关键字,需要用以上方式break
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是对Scala语言的一个基本介绍和快速入门,共包括如下章节: 概述 安装Scala 交互式命令行工具 文件方式...
    我是老薛阅读 4,821评论 0 2
  • scala文档 包含内容 1基础 2控制结构和函数 3数组相关操作 4映射和元组 5类 6对象 7.包和引入(x)...
    zlcook阅读 4,574评论 0 3
  • scala学习笔记 第2章 变量和数据类型 基本数据 scala的核心数据为四种 :字面量、值、变量、类型 值使...
    485b1aca799e阅读 6,452评论 0 1
  • 一、语系 1.动态类型语言 概念:意思就是类型的检查是在运行时做的 表现:使用变量前不需要声明变量 举例:Java...
    Dimple七阅读 2,948评论 1 14
  • 大数据开发中常用 Scala 进行功能开发,而且大数据处理和计算框架 Flink 和 Spark 都是基于 Sca...
    火影启源阅读 3,798评论 0 2