开发者学堂课程【Scala 核心编程-基础:字符串输出3种方式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8885
字符串输出3种方式
目录
一、 课堂小练习
二、 Scala 执行流程分析
三、 Scala 程序开发注意事项
四、 Scala 常用的转义字符(escape char)
五、 练习
六、 Scala 语言输出的三种方式
七、 案例
一、 课堂小练习
以下作为一个作业自主练习,这里不做讲解。
要求使用 Idea 下开发一个 Hi.scala 程序,可以输出“hello,scala!”。(10min)
1. 包名为 com.atguigu.chapter01
2. object 名称为 Hi
二、 Scala执行流程分析
接下来介绍 Scala 执行流程。
1. 示意图
2. 讲解
第一种方式:写完源代码以后用 scala 编译成字节码文件,然后运行。
第二种方式:不通过编译,直接将源代码运行一个 scala 文件即可。
3. 第二种方式案例
依然使用上节课的例子,将在 scalademo 文件夹里生成的 class 文件删除,只剩下源代码。
打开 cmd.exe 直接使用 scala 运行 HelloScala 源代码,可以发现是可以的,但是速度明显很慢:
D: \scalademo>scala HelloScala.scala
error: 10 error while decoding D:\scalademo HelloScala.scala with UTF-8
Please try specifying another one using the -encoding option
one error found
D:
\
scalademo>
发现报错,是因为编码有问题。打开 HelloScala.scala 文件,由于文件里含有中文,所以将其另存,编码 ANSI 更改为 UTF-8,选择保存即可。
另存之后再次运行编码就不会有错误了,如下图:
D: \scalademo>scala HelloScala.scala
hello,
scala!~~~
但是速度依然很慢,是因为输入 dir 查看目录也并没有生成字节码,只是在底层把它进行编译。所以这个方式是可行的,但在实际开发中不会直接执行源代码,只是不需要字节码,直接使用 scala 源代码进行编译,底层的编译与运行都做了。
以上就是 Scala 的执行流程分析。
三、 Scala 程序开发注意事项
接下来介绍 Scala 程序开发的注意事项(重点),这里只需了解就可以了。
1. Scala 源文件以“.scala”为扩展名。
2. Scala 程序的执行入口是 main()函数。
若判断代码中的主函数是否是真正的入口函数,则需要判断其是否被包装。
3. Scala语 言严格区分大小写。
4. Scala 方法由一条条语句构成,每个语句后不需要分号(Scala 语言会在每行后自动加分号),这也体现出 Scala 的简洁性。
添加分号也可以,但是画蛇添足了,这里举个例子。
5. 如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。
案例:
(1)第4点案例
不加分号:
object TestScala {
def main(args: Array[String]): Unit = {
println(“hello,scala, idea...”)
var num1: Int = 10
//Int 类型等于10
var num2: Int = 20
//Int 类型等于20
println(num1 +num2)
//相加
}
}
输出结果为:
30
Process finished with exit code 0
所以不添加分号即可。
(2)第5点案例
添加分号:
object TestScala {
def main(args: Array[String]): Unit = {
println(“hello,scala, idea...”)
var num1: Int = 10
;
var num2: Int = 20
;
println(num1 +num2) //
注意最后不加分号
}
}
输出结果为:
30
Process finished with exit code 0
得到相同的结果,但是在 Scala 开发里面要尽量避免这种写法。
四、 Scala 常用的转义字符(escape char)
1. |
\t |
一个制表位,实现对齐的功能 |
println(“姓名\t年龄”) println(“姓名\t20 |
2. |
\n |
换行符 |
println(“Hello,张三丰\nhello,郭襄”) |
3. |
\\ |
一个\ |
println(“C:\\Users\\Desktop\\day1_part1\\test100”) |
4. |
\” |
一个” |
println(“尚硅谷说: \”Go语言开始了\””) |
5. |
\r |
一个回车 println(“hello\rk”) |
println(“hello\ra”) |
如果在 Scala输 出特殊字符,则需要转义。例如使用\t:
println(“名字\t年龄\t邮件\t性别”) // \t 使排版更舒服
输出:
名字 年龄 邮件 性别
Process finished with exit code 0
可以看到运行之后的格式会比较清晰,另外几个就不一一举例了。
常用的就是以上5种,如果在控制开发中需要对齐格式,那么就需要转义字符。
五、 练习
以下练习作为课后作业,这里不做讲解。
要求:请使用一句输出语句,达到输入如下图形的效果:
六、 Scala 语言输出的三种方式
1. 字符串通过+号连接(类似 java)。
2. printf 用法(类似 C 语言)字符串通过%传值。
3. 字符串通过$引用(类似 PHP)。
val name =“ApacheCN”
val age = 1
val url =“www.atguigu.com”
println(“name=” + name + “age=" + age + “url=” + url)
printf(“name=%s, age=%d,url=%s \n", name, age, url)
println(s”name=$name, age=$age, url=$url”)
讲解:
第1点:当是字符串相加时,可以使用类似于 java 的方式使字符串相加。
第2点:printf 可以对字符串进行格式化输出,f 就代表格式化。
第3点:字符串通过引用$,类似于 PHP 的方式。
七、 案例
新建一个案例 printDemo,kind 选择 Object。
代码如下:
package com.atguigu.chapter01
object printDemo {
def main(args: Array[String]): unit = {
//第一种字符串相加
var str1: String =”he
l
lo”
//两个字符串:str1与 str2
var str2: String =”world!”
println( str1 + str2)
//输出,也就是将两个字符串合并
}
}
//第二种格式化输出代码如下:
var name: String =”tom”
var age: Int = 10
//年龄使用 Int 类型
var sal:Float = 10.67f
//薪水使用 Float 类型
var height: Double = 180.15
//身高使用 Double 类型
//格式化输出
printf(“名字=%s 年龄是%d薪水%f 高%f”,name,age,sal,height)
}
}
得出结果:
第一种:
D:\program\jdk8\bin\java…
hello world!
Process finished with exit code 0
可以看到字符串合并了。
第二种:
名字=tom 年龄是10 薪水10.670000 升高180.150000
Process finished with exit code 0
这里小数点后面默认保留到后6位,若想保留到小数点后两位,只需要添加所对应的数字即可,代码如下:
printf(“名字=%s 年龄是%d薪水%.2f 高%.3f”,name,age,sal,height)
运行可得到:
名字=tom 年龄是10 薪水10.67 升高180.150
Process finished with exit code 0
可以看到很清晰的就展示出来了。
紧接着是第三种格式输出:
//有时为了简洁,scala 支持在字符串里用$符来输出对应的内容。
//编译器会去解析$对应变量
//不用担心效率,因为在编译过后已经确定这个值了
println(s“\n个人信息如下: \n名字$name \n年龄$age \n薪水$sal”) //注意不能删除前面的 s,这是为了告诉编译器后面有变量需要进行解析。
运行得出结果:
个人信息如下:
名字 tom
年龄10
薪水10.67
可以看出这样的用法也是可以的,并且在其中还可以进行加减运算。
还有一种用法是:
println
(
s
“\n
个人信息如下2:
\n
名字$
{name} \n
年龄$
{age} \n
薪水$
{sal}”)
使用大括号将其包裹起来,明确的表达出这是一个表达式,再次执行:
个人信息如下2:
名字 tom
年龄10
薪水10.67
可以看到结果也是一样的。
若在其中使用运算符,代码如下:
println
(
s
“\n
个人信息如下2:
\n
名字$
{name} \n
年龄$
{age
+
10} \n
薪水$
{sal
*
10}”)
运行得到:
个人信息如下2:
名字 tom
年龄20
薪水1067.0
可以发现年龄确实加了10,薪水确实乘以了100倍。
若要对变量做一个简单的运算是可以这样使用的,但是要注意一定要使用大括号将其括起来,否则含义就会发生变化,所以有运算时就需要使用大括号,代表它是一个表达式。
以上就讲解到这里。