Scala 语言入门(一)基础语法和函数使用

一、下载安装 scala

将下载好的scala-2.12.8.zip包解压到当前目录,配置 环境变量

配置path  和 classpath

编写 HelloWorld.scala文件

object HelloWorld{
 def main(args:Array[String]){
    println("hello world!!!")
 }
}

在cmd 窗口,执行 scalac  HelloWorld.scala 等待编译成功之后,执行 scala -classpath . HelloWorld 看到 控制台输出

hello world !!!即可。

二、val 和 var 

val :值 (不可变)

        final

      例如: val  age:int =20

var :变量 (可变的)

      var name:String ="zhangsan"

      name = "zhangsi"

:int :String 可以不写,scala 大多数情况下可以自动推导出数据类型

三、scala 基本数据类型
Byte/Char 

Short/Int/Long/Float/Double

Boolean

类型转换 : 10.asInstanceOf[Double]

判断是否是某个类型:  10.isInstanceOf[Int]

四、lazy 在 scala 中的使用

val i = 1 

lazy val a = 1   , 用lazy修饰,只有在第一次使用的使用才会去给a 进行赋值。

五、函数/方法的定义

def 方法名(参数名:参数类型):返回值类型={
     //括号内的叫做方法体
     //方法体内的最后一行为返回值,不需要使用return
}
/**
  * @author DuanZhaoXu
  * @ClassName:
  * @Description:
  * @date 2018年12月17日 16:58:23
  */
object HelloWorld {

  def main(args: Array[String]): Unit = {
    //    println("hello world")
    //    println(add(1, 2))
    //    println(three())
    //  println(three)
    sayHello("张三")
    sayName("pk1")

    //命名参数的使用
    println(speed(100, 10))
    println(speed(distance = 100, time = 10))
    println(speed(time = 10, distance = 100))

    //可变参数  def  sum(number:Int*)
    println(sum(1, 5, 6, 10))

    //if使用
    println(ifTest(10))
  }

  //函数基本使用
  def add(x: Int, y: Int): Int = {
    x + y
  }

  def three() = 1 + 2

  def sayHello(name: String): Unit = {
    println("say hello..." + name)
  }

  //1.函数默认参数
  def sayName(name: String = "PK"): Unit = {
    println(name);
  }

  //以不按照传入参数的顺序进行函数调用
  def loadConf(conf: String = "spark-default.conf"): Unit = {
    println(conf)
  }

  //2.命名参数的使用,在调用此函数方,
  def speed(distance: Float, time: Float): Float = {
    distance / time
  }

  //3.可变参数
  def sum(a: Int, b: Int) = {
    a + b
  }

  def sum(a: Int, b: Int, c: Int): Int = {
    a + b + c
  }

  //4.可变参数
  def sum(numbers: Int*) = {

    var sum = 0;
    for (number <- numbers) {
      sum += number;
    }
    sum
  }

  //5.if 语句
  def ifTest(number: Int): Boolean = {
    if (number > 1) true else false
    //if(number>1){
    //true
    // }else{
    //false
    // }
  }

  //循环表达式
  def toTest(): Unit = {
    //to (闭区间)
    1 to 10
    1.to(10)

    //range (不包含10)
    Range(1, 10, 1)
    Range(10, 1, -1)

    //until 和 range 等效
    1 until 10
    1.until(10)


    //for 循环
    for (i <- 1 to 10 if i % 2 == 0) {
      println(i)
    }


    val courses = Array("Hadoop", "Spark sql", "Spark streaming", "storm", "scala")
    for (course <- courses) {
      println(course)
    }

    //foreach
    courses.foreach(course => println(course))

    //while 循环
    var (num, sum) = (100, 0)
    while (num > 0) { //出口
      sum = sum + num;
      num = num - 1; //步长
    }
    println(sum)
  }


}

       

猜你喜欢

转载自blog.csdn.net/qq_31905135/article/details/85050371