字符串输出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倍。

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

以上就讲解到这里。

相关文章
|
16天前
02-python的基础语法-标识符/运算符/字符串拓展/字符串的拼接/字符串格式化/字符串精度控制/字符串格式化方式2/对表达式进行格式化/练习题/数据输入-input语句
02-python的基础语法-标识符/运算符/字符串拓展/字符串的拼接/字符串格式化/字符串精度控制/字符串格式化方式2/对表达式进行格式化/练习题/数据输入-input语句
|
9月前
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
91 0
|
9月前
|
运维 Shell Perl
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(二)
94 0
|
11月前
|
C++
c++输出字符串
c++输出字符串
75 1
|
C语言 C++
转换符说明使用方法(在printf函数中)
一些常见的转换说明及打印结果: printf()的转换说明修饰符 printf()函数打印数据指令时要与代打印数据的类型相匹配才行。 如%d %c %ld......这些符号叫做转换说明。代表着数据转化成显示的形式。 一些常见的转换说明及打印结果: 转换说明 输出 %d 有符号十进制整数 %c 单个字符 %A 浮点数,十六进制数和p计数法(c99/c11) %a 浮点数,十六进制数和p计数法(c99/c11) %f 浮点数,十进制计数法 %e 浮点数,e计数法 %E 浮点数,e计数法 %i 有符号十进制整数 %o 无符号八进制整数 %p 指针(地址) %s 字符串 %u 无符号十进制整数
99 1
|
Python
Python 截取两个字符串之间的内容
Python 截取两个字符串之间的内容
92 0
|
程序员 Serverless Python
【Python】综合运用知识点,判断输入数字是否为素数以及计算等级差,并将值保存到txt文本文档里
最近在学习python,如何快速提高所学编程和加深印象呢 很显然,通过多练习和尝试编写代码实现功能
110 0
Python 定义一个函数,接受任意三个数字并按顺序从小大输出
Python 定义一个函数,接受任意三个数字并按顺序从小大输出
|
开发者 Python
字符串的表示方式|学习笔记
快速学习字符串的表示方式
97 0