scala变量和数据类型

文章目录

  • scala概述面向对象特性
  • 代码规范
  • 变量和常量
  • Scala关键字列表
  • Scala数据类型
  • Scala数据类型层次结构
  • 字符串插值
  • Scala流程控制语句
  • Scala循环控制
  • Scala 数组、元组、集合
    • 数组

scala概述面向对象特性

每个值都是对象
对象的数据类型和行为由类(Class)和特征(Trait,类似于interface)描述
利用特征实现混入式多重继承
函数式编程
每个函数都是一个值
支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配……
Scala是静态类型语言
扩展性:隐式类、字符串插值

代码规范

scala注释使用和java完全一样
使用tab操作,实现操作
ctrl+alt+L进行格式化
运算符两边习惯性各加一个空格
一行最长不超过80个字符
shift +enter 下一行
ctrl +alt +enter 上一行

变量和常量

常量:在程序执行过程中,其值不会被改变的变量
java:
变量类型 变量名称 = 初始值 int a = 1;
final 变量类型 变量名称 = 初始值 final int b =1
scala:
var 变量名[:变量类型] =初始值 var a:Int = 1
val 常量名[:常量类型] =初始值 val b:Int = 1
注意:能用常量的地方不用变量

Scala关键字列表

scala变量和数据类型_第1张图片

Scala数据类型

scala变量和数据类型_第2张图片

Scala数据类型层次结构

Any:所有类型的超类(顶级类型)
AnyVal:表示值类型的超类
AnyRef:表示引用类型的超类,对应java.lang.Object
Unit:表示无值,类似Java中的void
Nothing:所有类型的子类
Null:表示null或空引用
scala变量和数据类型_第3张图片

字符串插值

s插值器:允许将变量引用、表达式直接插入字面字符中

val name = "tom"
println(s"hello,$name")
println(s"1+1=${1+1}")

在这里插入图片描述
f插值器:生成简单的格式化串,所有的变量引用都应当后跟一个printf-style格式的字符串,如%d,%s,%f(整数、字符串、单精度)

val height = 1.9d
val name = "tom"
println(f"$name%s is $height%2.3f meters")

%2.3f 2:整数加小数最小两位 3:保留三位小数

raw插值器

println(s"a\nb")
println(raw"a\nb")

scala变量和数据类型_第4张图片

Scala流程控制语句

if和if…else

    val a = 10
    if (a > 5) {
      println("max five")
    }
    if (a > 5) {
      println("max five")
    }else if(a == 5){
      println("equal five")
    } else {
      println("min five")
    }

条件语句返回值
Scala任何表达式都要返回值

    val a = 10
    val b=if(a==10) a+1 else a
    println(b)

单行表达式可以省略{} 输出结果:11

代码块{…}也是表达式,返回值是最后一个表达式的结果

    val x = 10
    val y = {
      println("hello")
      x + 1
      x + 5
    }
    println(y)

输出结果:
hello
15

    val x = 1
    val y = {
      x+1;print("我是代码块");x+4
    }
    println(y)

输出结果:我是代码块5

Scala循环控制

while

    var num:Int = 0
    while (num < 100) {
      println(num)
      num = num + 1
    }

do…while

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

for 循环
to 双闭区间 until 左闭右开

    val num:Int = 10
    for (i <- 1 to num){
      println(i)
    }
    for (i <- 1 until num){
      println(i)
    }

中断

    import scala.util.control.Breaks._
    val num:Int = 10
    breakable(
      for (i <- 1 to num){
      if(i == 5) break
      println(i)
      }
    )

for循环过滤
多个条件用;隔开

    val num = 10
    for (i <- 1 to num; if i%2==0;if i>5){
      println(i)
    }

scala变量和数据类型_第5张图片
for循环返回值
for循环中的yield会把当前的元素记下来,保存在集合中,循环结束后将返回给该集合。也称for推导式

    val num = 10
    val ints = for (i <- 1 to num;if i%2==0;if i>5) yield i
    println(ints)
    for (elem <- ints) {
      println(elem)
    }
    println(ints(0))
    val itor = ints.iterator
    while (itor.hasNext) {
      println(itor.next())
    }

scala变量和数据类型_第6张图片

Scala 数组、元组、集合

数组

存储固定大小的元素
数组索引从0开始

    //创建方式一
    val s1 = new Array[String](3)
    s1(0)="wanqing"
    s1(1)="zhaoqi"
    s1(2)="wangcheng"
    //创建方式二
    //调用Array的伴生对象中的apply()返回Array实例,相当于构造
    val s2 = Array("aaa","bbb","ccc")
    //创建方式三区间数组
    val s3 = Array.range(1,10,2)
    println(s1.length)
    for (elem <- s3) {
      println(elem)
    }

scala变量和数据类型_第7张图片
元组
可以包含不同类型的元素
最多支持22个元素
使用下划线访问元素

var tp1 = ("mike",1,"zzzz")
println(tp1._1)

你可能感兴趣的:(scala变量和数据类型)