Scala 优雅入门(一) 快速开始

本教程为总结笔记, 特点是简洁, 重点突出, 逻辑层级分明

教程可能不会十分全面, 因为 Scala 中语法非常多, 这里只讲重点和经常使用的, 旨在快速掌握工作中需要的 80% 技能, 有如有错误, 欢迎指正~

 

概述

创始人马丁·奥德斯基(Martin Odersky)

Scala 优雅入门(一) 快速开始_第1张图片

Scala 源代码(.scala) 会被编译成 Java 字节码(.class),然后运行于 JVM 之上,并可以调用现有的 Java 类库,实现两种语言的无缝对接

基本的程序结构

//1. object 是一个关键字,表示一个伴生对象
//2. 如果该文件只出现了一个object HelloScala 就会在编译后出现两个.class文件
//3. 第一个文件是HelloScala.class 这个表示他的伴生类.
//4. 第2个文件是HelloScala$.class 对应的是object HelloScala,但是本质是调用它对应的一个静态属性 MODULE$

object HelloScala {

       // 1. def 表示一个方法或者一个函数
       // 2. main 表示入口
       // 3. args: Array[String] 表示形参,args 是形参名 Array[String] 是形参类型表示一个装String的Array数组
       // 4. :Unit  表示返回值类型为 Unit ,等价于java 的void
       // 5. = 表示 后面写的是函数体/方法体, 它还有返回值类型推导的作用

       def main(args: Array[String]):Unit = {

           //输出, 类似System.out.println("hello, scala世界!")
           println("hello, scala世界!")
       }
}

快速开始

代码运行范例

main 方法作为运行的入口, 需要放在 object 中

object HelloScala {

  def main(args: Array[String]): Unit = {
    println("hello,scala!")
  }
}

语言输出的三种方式

  1. 字符串通过 + 号连接(类似 java)
  2. printf 用法 (类似C语言) 字符串通过 % 传值。(格式化输出)
  3. 字符串通过 $ 引用 (类似PHP)
object InputDemo {

  def main(args: Array[String]): Unit = {

    val name:String = "tom"
    val age:Int = 10
    val sal:Double = 7890.144

    //格式化输出
    //sal=%.2f 保留小数点两位的方式输出(四舍五入)
    printf("name=%s age=%d sal=%.2f\n", name, age, sal)

    //字符串通过$引用(类似PHP)。
    println(s"name=$name age=${age+1} sal=$sal sum2=${sum2(23,90)}")
  }

  //函数/方法
  def sum2(n1:Int,n2:Int): Int = {
    return n1 + n2
  }
}

Scala 源码的查看

使用 IDE:  idea

  1. 查看源码, 选择要查看的方法或者类, 输入 ctrl + b, 或者在方法上按住 ctrl 再按鼠标左键
  2. 关联源码: 先把源码包放在 lib, 需要解压两次, 然后点击 attach source 即可

 

文档注释: 

注释内容可以被工具 scaladoc 所解析,生成一套以网页文件形式体现的该程序的说明文档

object DocumentComment {

  def main(args: Array[String]): Unit = {

  }

  /**
    * @example
    *          比如n1 = 10 n2 = 20 返回 n1 - n2 = -10
    * @param n1 传入一个整数n1
    * @param n2 传入一个整数n2
    * @return   返回一个整数值
    */
  def sub(n1:Int,n2:Int): Int = {
    return n1 - n2
  }
}

Scala 优雅入门(二) 变量

如有问题或意见, 欢迎留言~

你可能感兴趣的:(Scala)