Scala【一】安装部署及入门

    技术2022-07-10  140

    Scala安装环境部署及入门

    概述安装idea配置Scala初体验scala变量与常量Scala数据类型Scala数据类型层次结构Scala循环控制while循环for循环Scala的break和continuefor循环过滤for循环返回值 Scala元组

    概述

    Scala源自Java Scala构建在JVM之上 Scala与Java兼容、互通

    Scala的优势 多范式编程:面向对象编程、函数式编程 表达能力强,代码精简

    大数据与Scala Spark采用Scala语言设计 提供的API更加优雅 基于JVM的语言更融入Hadoop生态圈

    Scala

    面向对象特性 每个值都是对象 对象的数据类型和行为由类(Class)和特质(Trait)描述 利用特征实现混入式多重继承

    函数式编程 每个函数都是一个值 支持高阶函数、柯里化、样例化及模式匹配…

    Scala是静态类型语言

    安装

    要求JDK环境

    资源提供scala2.11.8 链接https://pan.baidu.com/s/1tc-bm5sF8ofhGlC5Kx4lxA 提取码:hei8

    scala解释器 解压安装完毕后进入终端数据scala指令进入如下页面

    idea配置

    idea需要下载相关插件,在对应官网选择与自己ideal版本匹配的插件 https://plugins.jetbrains.com/plugin/1347-scala 进入官网———>选择versions——>选择对应版本下载(注意不要解压) 进入idea——>configure——>Plugins——>Install Plugin from Disk(选择你下在插件的路径)——>Restart IDE

    Scala初体验

    scala> object MyScala{ def main(args:Array[String]):Unit={ println("hello,world") } } defined object MyScala scala> MyScala.main(null) hello,world

    scala变量与常量

    变量 赋值后可以改变,生命周期中可以被多次赋值 var 变量名称:类型=xxx 一般无需指定类型,Scala编译器会自动推断出类型 //变量定义会自动推断出类型 scala> var c=20 c: Int = 20 //当类型不匹配时会报错 scala> var c:Int="abc" <console>:11: error: type mismatch; found : String("abc") required: Int var c:Int="abc" //当c为字符串时,再次赋值必须是字符串 scala> var c="abc" c: String = abc //报错 scala> c=40 <console>:12: error: type mismatch; found : Int(40) required: String c=40 //赋值类型为字符串正常 scala> c="40" c: String = 40 常量 赋值后不可变,类似于java中的final变量 val 常量名称:类型=xxx //常量赋值后不可更改 scala> val k=50 k: Int = 50 //更改报错 scala> k=60 <console>:12: error: reassignment to val k=60 //但可以直接使用 scala> k res0: Int = 50

    Scala数据类型

    Scala与Java有着相同的原始数据类型 数据类型描述Byte8位有符号整数。数值区间-128 ~ 127Short16位有符号整数。数值区间-32768 ~ 32767Int32位有符号整数。数值区间 -2147483648 ~ 2147483647Long64位有符号整数。 -9223372036854775808 ~ 9223372036854775807Float32位IEEE 754 单精度浮点数Double64位IEEE 754 双精度浮点数Char16位无符号Unicode字符。区间值为U+0000 ~ U+FFFFBooleantrue或falseString字符序列

    Scala数据类型层次结构

    Any:所有类型的超类(顶级类型)AnyVal:表示值类型的超类AnyRef:表示引用类型的超类,对应java.lang.ObjectUnit:表示无值,类似Java中的voidNothing:所有类型的子类Null:表示null或空引用

    Scala循环控制

    while循环

    //while var num: Int = 0; while ( num < 100 ) { println( num ); num = num + 1; } //do while var num: Int = 0; do { println( num ); num = num + 5; } while ( num < 200 )

    for循环

    //to val num:Int = 10; for ( i: Int <- 1 to num ) { println( i * 100 ); } //until for { i: Int <- 1 until 100 } { val y = 2*i; println( y ); }

    until和to的区别如下,until不包含,to包含

    Scala的break和continue

    使用break跳出方法需要导包 import scala.util.control.Breaks._

    //导包 scala> import scala.util.control.Breaks._ import scala.util.control.Breaks._ //scala中的break scala> for (k:Int <- 1 to 10){ | if(k==5){ | break; | } | println(k) | } 1 2 3 4 scala.util.control.BreakControl //scala中的continue scala> for (k:Int <- 1 to 10 ){ | breakable{ | if(k==5){ | break; | } | println(k) | } | } 1 2 3 4 6 7 8 9 10

    for循环过滤

    //使用if过滤多个条件之间使用分号分开 val num:Int = 10; for ( i: Int <- 1 to num; if i%2==0;if i>5 ) { println( i * 100 ); }

    for循环返回值

    for循环中的yield会把当前元素记下来,保存在集合中,循环结束后返回该集合

    val num:Int = 10; var retVal=for ( i: Int <- 1 to num; if i%2==0;if i>5 ) yield i; for(a<-retVal){ println(a); } //输出6 8 10

    Scala元组

    可以包含不同类型的元素最多支持22个元素 (Tuple1~Tuple22)使用下划线“_"访问元素,“_1"表示第一个元素 //元组声明方式一 var tp1 = ("Mike", "123 ABC street", 58) println(tp1._1) println(tp1._2) println(tp1._3) //迭代元组 tp1.productIterator.foreach{ i =>println("Value = " + i )} //元组声明方式二 var tp2 = new Tuple3("Mike", "123 ABC street", 58) //元组声明方式三 def mike = "Mike" -> 5 //输出scala.Tuple2 mike.getClass //将元组元素依次赋给三个变量 val(name, address, age) = tp1 println(name) println(address) println(age)
    Processed: 0.010, SQL: 9