scala(一)

scala

1.字符串

1.1传值字符串

object ScalaString {
    def main(args: Array[String]): Unit = {
        // 传值字符串(格式化字符串)
        printf("name=%s
", name)
    }
}

1.2插值字符串

object ScalaString {
    def main(args: Array[String]): Unit = {
        // 插值字符串
        // 将变量值插入到字符串
        println(s"name=${name}")
    }
}

1.3多行字符串

object ScalaString {
    def main(args: Array[String]): Unit = {
        // 多行格式化字符串
        // 在封装JSON或SQL时比较常用
        // | 默认顶格符
        println(
                    s"""
                      | Hello
                      | ${name}
        """.stripMargin)
}
}
插值字符串与多行字符串结合使用打印json格式
  def main(args: Array[String]): Unit = {
    val name = "zhangsan"
    val password = "123456"
    val json =
      s"""
         |{"username=":"${name}","password=:"${password}"}
         |""".stripMargin
    print(json)
  }

2.输入输出

2.1输入

控制台输入
object ScalaIn {
    def main(args: Array[String]): Unit = {
        // 标准化屏幕输入
        val age : Int = scala.io.StdIn.readInt()
        println(age)
}
}
从文件中获取输入
Idea中的基准路径在项目的根目录下
  def main(args: Array[String]): Unit = {
    // 请注意文件路径的位置
    val source: BufferedSource = scala.io.Source.fromFile("./data")
    while (source.hasNext){
      print(source.next())
      
    }
  }

3.数据类型

3.1类型转换问题

常量计算在编译时,√
val c : Char = 'A' + 1
println(c)
变量计算在运行时,  编译器不知道类型,所以先转成INT 之后INT转为char 报错 ×
val b :Byte = 'A'
val c :Char = b+1
printf(c) 

4.运算符

val a = new String("abc")
val b = new String("abc")

println(a == b)         比较字符串内容
println(a.equals(b))    比较字符串内容  但a不能为空
println(a.eq(b))        比较地址值

5.流程控制

Scala语言中没有三元运算符的,使用if分支判断来代替三元运算符

5.1循环控制

for循环
for ( 循环变量 <- 数据集 ) {
    循环体
}
object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5) ) { // 范围集合   Range的第二个参数(until)不包含  即不包含5
            println("i = " + i )
        }
        for ( i <- 1 to 5 ) { // 包含5
            println("i = " + i )
        }
        for ( i <- 1 until 5 ) { // 不包含5
            println("i = " + i )
        }
    }
}

5.2循环步长

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5,2) ) {
            println("i = " + i )
        }
        for ( i <- 1 to 5 by 2 ) {
            println("i = " + i )
        }
 for ( i <- Range(5, 1, -1) ) {
            println(i)
        }
    }
}

        val range = 1 to 5 by 2
        val range = 1 until 5 by 2
        val range = Range(1, 5, 2)

        for ( i : Int <- range ) {
            println(i)
       }
       for ( i <- range ) {
            println(i)
        }

5.3循环嵌套

object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5); j <- Range(1,4) ) {
            println("i = " + i + ",j = " + j )
        }
        for ( i <- Range(1,5) ) {
            for ( j <- Range(1,4) ) {
                println("i = " + i + ",j = " + j )
            }
        }
    }
}

引入变量
object ScalaLoop {
    def main(args: Array[String]): Unit = {
        for ( i <- Range(1,5); j = i - 1 ) {
            println("j = " + j )
        }
    }
}

5.4循环返回值

如果希望for循环表达式的返回值有具体的值,需要使用关键字yield
object ScalaLoop {
    def main(args: Array[String]): Unit = {
        val result = for ( i <- Range(1,5) ) yield {
            i * 2
        }
        println(result)
    }
}

输出结果:Vector(2, 4, 6, 8)

5.5循环中断

scala中break 采用抛出异常的方式来结束循环,为了程序的正常运行,需要外面使用breakable处理异常
import scala.util.control.Breaks._
object ScalaLoop {
    def main(args: Array[String]): Unit = {
        breakable {
            for ( i <- 1 to 5 ) {
                if ( i == 3 ) {
                  break
                }
                println(i)
            }
        }
    }
}

原文地址:https://www.cnblogs.com/xiao-bu/p/14782777.html