字符串输出3种方式|学习笔记

简介: 快速学习字符串输出3种方式。

开发者学堂课程【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. 示意图

 image.png

2. 讲解

第一种方式:写完源代码以后用 scala 编译成字节码文件,然后运行。

第二种方式:不通过编译,直接将源代码运行一个 scala 文件即可。

3. 第二种方式案例

依然使用上节课的例子,将在 scalademo 文件夹里生成的 class 文件删除,只剩下源代码

打开 cmd.exe 直接使用 scala 运行 HelloScala 源代码,可以发现是可以的,但是速度明显很慢:

image.png

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,选择保存即可。

另存之后再次运行编码就不会有错误了,如下图:

image.png

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)  //相加

}

}

输出结果为:

image.png

30

Process finished with exit code 0

所以不添加分号即可。

(2)第5点案例

添加分号:

object TestScala {

def main(args: Array[String]): Unit = {

println(“hello,scala, idea...”)

var num1: Int = 10var num2: Int = 20println(num1 +num2)  //注意最后不加分号

}

}

输出结果为:

 image.png

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 使排版更舒服

输出:

image.png

名字 年龄 邮件 性别

Process finished with exit code 0

可以看到运行之后的格式会比较清晰,另外几个就不一一举例了。

常用的就是以上5种,如果在控制开发中需要对齐格式,那么就需要转义字符。

 

五、 练习

以下练习作为课后作业,这里不做讲解。

要求:请使用一句输出语句,达到输入如下图形的效果

image.png

 

六、 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 =”hello”  //两个字符串: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)

}

}

得出结果:

第一种:

image.png

D:\program\jdk8\bin\java…

hello world!

Process finished with exit code 0

可以看到字符串合并了。

第二种:

image.png

名字=tom 年龄是10 薪水10.670000 升高180.150000

Process finished with exit code 0

这里小数点后面默认保留到后6位,若想保留到小数点后两位,只需要添加所对应的数字即可,代码如下:

printf(“名字=%s 年龄是%d薪水%.2f 高%.3f”,name,age,sal,height)

运行可得到:

image.png

名字=tom 年龄是10 薪水10.67 升高180.150

Process finished with exit code 0

可以看到很清晰的就展示出来了。

紧接着是第三种格式输出:

//有时为了简洁,scala 支持在字符串里用$符来输出对应的内容。

//编译器会去解析$对应变量

//不用担心效率,因为在编译过后已经确定这个值了

println(s“\n个人信息如下: \n名字$name \n年龄$age \n薪水$sal”)  //注意不能删除前面的 s,这是为了告诉编译器后面有变量需要进行解析。

运行得出结果:

image.png

个人信息如下:

名字 tom

年龄10

薪水10.67

可以看出这样的用法也是可以的,并且在其中还可以进行加减运算。

还有一种用法是:

println(s“\n个人信息如下2: \n名字${name} \n年龄${age} \n薪水${sal}”)

使用大括号将其包裹起来,明确的表达出这是一个表达式,再次执行:

image.png

个人信息如下2:

名字 tom

年龄10

薪水10.67

可以看到结果也是一样的。

若在其中使用运算符,代码如下:

println(s“\n个人信息如下2: \n名字${name} \n年龄${age + 10} \n薪水${sal * 10}”)

运行得到:

image.png

个人信息如下2:

名字 tom

年龄20

薪水1067.0

可以发现年龄确实加了10,薪水确实乘以了100倍。

若要对变量做一个简单的运算是可以这样使用的,但是要注意一定要使用大括号将其括起来,否则含义就会发生变化,所以有运算时就需要使用大括号,代表它是一个表达式。

以上就讲解到这里。

相关文章
|
机器人
阿里云 RPA 的成本效益分析
机器人流程自动化(RPA)技术在企业数字化转型中扮演着越来越重要的角色。阿里云 RPA 作为一种高效的自动化解决方案,不仅可以提高业务效率,还可以降低运营成本。本文将对阿里云 RPA 的成本效益进行分析,帮助企业更好地评估和利用这一技术。
|
供应链 安全 Linux
简单、透明、安全、高度集成!龙蜥可信 SBOM 能力探索与实践
从攻击面管理的角度解决软件供应链SBOM复杂体系的安全可信问题。
|
XML 监控 Java
【Java】Spring Boot项目的创建和使用
【Java】Spring Boot项目的创建和使用
|
Linux 网络安全 Docker
docker centos7 安装ssh
docker centos7 安装ssh 原文链接:http://blog.csdn.net/mergerly/article/details/54709919 一.
4813 0
|
5月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
边缘计算 安全 物联网
揭秘边缘计算:未来物联网的基石
揭秘边缘计算:未来物联网的基石
725 93
|
9月前
|
网络安全
一个简单的网站建设需要多少费用?
网站建设费用因类型、功能和需求的不同而差异较大,包括基础型网站、设计和定制网站、功能型与电商网站、域名费用、服务器费用、HTTPS认证费用、网站维护费用等,其中独立站建设费用相对较高。
533 2
|
Java 测试技术 编译器
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
280 6
ES6新特性(基础常用)
文章介绍了ES6的常用新特性,包括let和const命令、对象解构赋值、模板字符串、Map和Set对象。通过示例代码详细解释了它们的用法和与传统ES5语法的区别,以及如何利用这些特性编写更简洁和高效的代码。
ES6新特性(基础常用)
|
编解码 数据可视化 API
DIY可视化UniApp表格组件
DIY可视化UniApp表格组件
285 0