2.1 常见的数据类型
2.2 scala变量定义
4.1 条件表达式、
4.2 循环语句
4.3 yield关键字
正文
一,简介
Scala 是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特 性 。 Scala 运 行 于 Java 平 台 ( Java 虚 拟 机 ), 并 兼 容 现 有 的 Java 程 序 。
二,数据类型和变量的定义
2.1 常见的数据类型
Scala 和 Java 一样,有 7 种数值类型 Byte、Char、Short、Int、Long、Float 和 Double(无包装类型)和 Boolean、Unit 类型.
如下图所示:
2.2 scala变量定义
如下面代码所示:
object 变量定义 extends App {
/**
*定义变量使用 var 或者 val 关键字
*语法:
*var|val 变量名称 (: 数据类型) = 变量值
*/
//使用 val 修饰的变量, 值不能为修改, 相当于 java 中 final 修饰的变量
val name = "小牛人"
//使用 var 修饰的变量, 值可以修改
var age = 18
//定义变量时, 可以指定数据类型, 也可以不指定, 不指定时编译器会自动推测变量 的数据类型
val nickName: String = "牛牛"
}
三,字符串格式输出
下面示例展现了scala的格式输出:
/**
*Scala 中的格式化输出
*/
object ScalaPrint extends App{
val name = "小牛学堂"
val pirce = 998.88d
val url = "www.edu360.com"
//普通输出
println("name=" + name, "pirce=" + pirce, "url=" + url)
//文字'f'插值器允许创建一个格式化的字符串,类似于 C 语言中的 printf。
//在使用'f'插值器时,所有变量引用都应该是 printf 样式格式说明符,如%d,%i,%f 等。
//这里$name%s 打印 String 变量 James 和$height%2.2f 打印浮点值 1.90。
println(f"$name%s 学费 $pirce%1.2f, 网址是$url") // 该行输出有换行
printf("%s 学费 %1.2f, 网址是%s", name, pirce, url) // 该行输出没有换行
//'s'允许在处理字符串时直接使用变量。
//在 println 语句中将 String 变量($name)附加到普通字符串中。 println(s"name=$name, pirce=$pirce, url=$url")
//字符串插入器还可以处理任意表达式。
//使用's'字符串插入器处理具有任意表达式(${1 + 1})的字符串(1 + 1)的以下代码片段。任何表达式都可以嵌入到${}中。
println(s"1 + 1 = ${1 + 1}") // output: 1 + 1 = 2
}
四,条件和循环
4.1 条件表达式
/**
*Scala if 条件表达式
*/
object ScalaIf extends App{
//if 语句的使用
val faceValue: Int = 99
val res1 = if(faceValue > 90 ) "帅的不要不要的" else "瘪犊子玩意儿" println(res1)
//8 > 8 不成立, 且代码没有 else 分支, res2 是什么呢 val i = 8
val res2 = if (i > 8) i println(res2)
val res3 = if (i > 8) i else "前面是整型这里是字符串, 那个 res3 是个啥?" println(res3)
//if ... else if ... else 代码较多时可以使用代码块{} val score = 76
val res4 = {
if(score > 60 && score < 70) "及格"
else if(score >=70 && score < 80) "良好" else "优秀"
}
}
4.2 循环语句
在 scala 中有 for 循环和 while 循环,用 for 循环比较多 for 循环语法结构:for (i <- 表达式/数组/集合)
/**
*Scala for 循环
*/
object ScalaFor extends App {
//定义个数组, 元素为 1 到 6
val array = Array(1, 2, 3, 4, 5, 6)
//遍历打印数组中的每个元素
for(ele <- array) { // 类似 Java 中的增强 for
println(ele)
}
//通过角标获取数组中的元素
//定义一个 0 到 5 的角标范围
for(i <- 0 to 5) { // 0 to 5 => 会生成一个范围集合 Range(0,1,2,3,4,5)
println(array(i))
}
for(i <- 0 until 6) { // 0 until 6 => 会生成一个范围集合 Range(0,1,2,3,4,5)
println(array(i))
}
//to 和 until 的区别就是 to 包含为前后都为闭区间, until 为前闭后开区间
//打印数组中的偶数元素
for(e <- array if e % 2 == 0) { // for 表达式中可以增加守卫 println(e)}
//观察下面代码输出结果 双重for循环
for(i <- 1 to 3; j <- 1 to 3 if i != j) { println((10 * i + j) + " ")}
for(e <- array if e % 2 == 0) yeild e
}
4.3 yield关键字
将一个循环循环出来的值存在一个数组中,并返回。
如下所示:
for(e <- array if e % 2 == 0) yeild e
五,运算符和运算符的重载
Scala 中的+ - * / %等操作符的作用与 Java 一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b 可以写成 a.方法(b)