scala-02-基本数据类型-string-分支循环

一, 基本数据类型

1, scala的数据类型和java类似, 不同的是scala中所有的类型都是引用类型的

Byte
Short
Int
Long
Char
Float
Double
String
Boolean
Unit  相当于 void, 用作不反回任何结果的
ANY  相当于java object

2, string 处理, 字符串定义

一般使用双引号进行定义,    val str = "abc"

如果想保持原样输出, 可以使用 ''' 进行定义

val longStr = ''' type: abc
                         method: get'''

字符串的格式化输出

// 字符插入器
println(s“$DATE is very nice”)  // 使用 s“”,
println(s"${student.name}")    // 可以传入任意表达式
println(s" ${1 + 1}")        // 任意表达式

// 字符串插入
println(f"$name%s is good boy")  // 使用 f“%name%s”
printf("%s is good boy", name")  // 使用 printf(“%s”, name)
printf("%4.2f. ", price)      // 小数点后保留 2位

 

3, 变量定义

val: 用于定义常量, 定义后的值不可改变, 必须给初始值

val name : String = “abc”

可以不写变量类型 , 使用自动推断

定义 Unit, 相当于void

val s: Unit = ()

 

var: 用于定义变量

var num: Int = ‘a’

发生了隐式转换

二, 运算符操作

3, 运算符操作

scala中所有的运算符都以方法的形式被调用, 所有的运算符都可以被重载

var count = a + b
在scala中会被转换成 var count = (a).+(b)    的形式

4, 对象比较

scala中的比较是基于内存比价的, 而java中是基于引用进行比较的

三, 结构控制

1),  if

可以返回值, 条件表达式的值返回给变量

val result = if (a > b) 1 else 0
val result = if (a > b) 1 else if (i ==8) i else 0

如果没有任何值返回, 会默认返回 (), 也就是 Unit (AnyVal)

2, while循环

def gcdLoop(x: Long, y: Long): Long = {
    var a = x
    var b = y
    while( a != 0) {
        val temp = a
        a = a * b
        b = temp
    }
    b
}

3, do..while 循环

var line = ""
do {
    line = readLine()
    println(line)
} while (line != "")

4, 使用if, 代替while循环

减少var变量的定义, 同时程序表达能力更强

def gcdLoop(x: Long, y: Long): Long = if (x = 0) x else gcdLoop(y, x * y)

 

5, for循环使用

先认识下生成器: <-  

for (file <- fileSet) println(file)
// 遍历出来的元素

fileSet的值会依次赋值给file, 然后打印出来

for (i <- 1 to 5) 
    println( arr(i) )

for (i <- 1 until 6)
  println( arr(i) )

"to" 会包含1-5的值, “until” 不包含 5,

嵌套for循环

 def for_for = {
    for (i <- 1 to 9; j <- 1 to 9) {
      if (j == 9) println(i * j)
      else print(i * j + " ")
    }
  }

for循环中可以使用if进行判断

for (file <- fileSet if file.getName.endsWith(".scala") {
    println(file)
}

多重嵌套循环

def grep(pattern: String) =
      for (
        file <- filesHere
        if file.getName.endsWith(".scala");
        line <- fileLines(file)
        if line.trim.matches(pattern)
      ) println(file +": "+ line.trim)
    grep(".*gcd.*")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值