scala
1.字符串
1.1传值字符串
object ScalaString {
def main(args: Array[String]): Unit = {
// 传值字符串(格式化字符串)
printf("name=%s\n", 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)
}
}
}
}