二、Scala基础语法


1.输出语句和分号

1.1输出语句

方式一:换行输出
格式:println(里边写你要打印到控制台的数据);

方式二:不换行输出
格式:print(里边写你要打印到控制台的数据);

注意:不论哪种输出语句,都可以打印多个值,格式为: println(值1, 值2, 值3...)

1.2分号

Scala语句中,单行代码最后的分号可写可不写。如果是多行代码写在一行,则中间的分号不能省略,最后一条代码分号可省略不写。

2 Scala中的常量

常量:在程序运行过程中,其值不能发生改变的量

2.1分类

  • 字面值常量(常用的有一下几种):
    • 整型常量
    • 浮点型常量
    • 字符常量
    • 字符串常量
    • 布尔常量
    • 空常量
  • 自定义常量(之后涉及)

2.2代码演示

//整形常量
println(10)
//浮点型常量
println(10.2)
//字符常量,值要用单引号括起来
println('a')
//字符串常量,值要用双引号括起来
println("abc")
//布尔常量,值只有true和false
println(true)
//空常量
println(null)

3.Scala中的变量

变量:在程序执行过程中,其值可以发生改变的值。

3.1语法格式

Java变量格式:

int a = 0;

在Scala中,可以用valvar来定义变量,格式为:

val/var 变量名:变量类型 = 初始值

其中

  • val定义的是不可重新赋值的变量,也就是自定义变量。
  • var定义的是可重新赋值的变量。
    在这里插入图片描述

3.2使用类型推断来定义变量

Scala可以自动根据变量的值来自动推断变量的类型,这样编写代码更加简洁。
在这里插入图片描述

4.字符串

4.1定义字符串的方式

方式一:使用双引号

val/var 变量名 = "字符串"

方式二:使用插值表达式
可以避免大量字符串的拼接

val/var 变量名  = s"${变量名/表达式}字符串"

示例:
定义若干个变量,分别保存:“zhangshan”、23、“male”,定义一个字符串,保存这些信息。
打印输出:name=zhangsan, age=23, sex=male
在这里插入图片描述

方式三:使用三引号
如果有大段的文本需要保存,就可以使用三引号来定义字符串。例如:保存一大段的SQL语句。
三个引号中间的所有内容都将作为字符串的值。

val/var 变量名 = """字符串
字符串2"""

示例:
定义一个字符串,保存以下SQL语句

select
	*
from
	t_user
where
	name = "zhangshan"

打印该SQL语句
在这里插入图片描述

4.2扩展:惰性赋值

在大数据开发中有时会编写非常复杂的 SQL 语句,当一些变量保存的数据较大时,而这些数据又不需要马上加载到 JVM 中,可以使用惰性赋值来提高效率。

lazy val/var 变量名 = 表达式

5.标识符

标识符就是给变量、方法、类等起名字的。Scala中的标识符与Java的非常相似。

5.1命名规则

  • 必须由大小写英文字母,数字,下划线_,美元符$,这四部分任意组合组成
  • 数字不能开头
  • 不能和Scala中的关键字重名
  • 最好做到见名知意

5.2命名规范

  • 变量或方法:从第二个单词开始,每个单词的首字母都大写,其他字母全部小写(小驼峰命名法)
zhangSanAge, student_Country, getSum
  • 类或特质(Trait):每个单词的首字母都大写,其他所有字母全部小写(大驼峰命名法)
 Person, StudentDemo, OrderItems
  • 包:全部小写,一般是公司的域名反写,多级包之间用.隔开
com.itheima.add, cn.itcast.update

6.数据类型

Scala 也是一门强类型语言,它里面的数据类型绝大多数与 Java 一样。

6.1数据类型

在这里插入图片描述
注意Scala 和 Java 类型的区别:

  1. 所有类型都以大写字母开头
  2. 整形使用 Int 而不是 Integer
  3. 定义变量可以不写类型,让编译器自动推断
  4. 默认整形是 Int,默认浮点型是 Double

6.2 Scala类型层次结构

在这里插入图片描述
思考:以下代码是否有问题?

val b:Int = null

Scala会解释报错:Null类型并不能转换为int类型,说明Null类型并不是int类型的子类

7.类型转换

当 Scala 程序在进行运算或赋值时,范围小的数据类型会自动转换为范围大的数据类型值,然后再进行计算。
类型转换分为值类型转换和引用类型转换,值类型转换又分为自动类型转换和强制类型转换。

7.1自动类型转换

范围小的数据类型值会自动转换为范围大的数据类型值,自动类型转换从小到大依次为:

Byte -> Short -> Int -> Long -> Float -> Double
val a:Int = 3
val b:Double = 3 + 2.21 //因为是int类型和double类型的值进行计算,所以最终结果是Double类型
val c:Byte = a + 1 //报错,因为最终计算结果是Int类型的数据,将其赋值Byte类型肯定不行

在这里插入图片描述

7.2强制类型转换

将范围大的数据类型值通过一定格式转换为范围小的数据类型值(可能会造成精度缺失)。

val/var 变量名:数据类型 = 具体的值.toXxx //Xxx表示要转换到的数据类型	
val a:Double = 5.21
val b:Int = a.toInt

在这里插入图片描述

7.3值类型和String类型之间的相互转换

1.值类型的数据转换成String类型
格式一:

val/var 变量名:String = 值类型 + ""

格式二:

val/var 变量名:String = 值类型.toString

示例:
将Int,Double,Boolean类型的数据转换成其对应的字符串形式。

val a1:Int = 10
val b1:Double = 2.1
val c1:Boolean = true

//方式一:通过和空字符串拼接的形式实现
val a2:String = a1 + ""
val b2:String = b1 + ""
val c2:String = c1 + ""

//方式二:通过toString函数实现
val a3:String = a1.toString
val b3:String = b1.toString
val c3:String = c1.toString

在这里插入图片描述
2.String类型的数据转换成其对应的值类型
格式:

val/var 变量名:值类型 = 字符串值.toXxx

注意:
String类型的数据转换成Char类型的数据,方式有点特殊,并不是调用toChar,而是toCharArray

示例:
将字符串类型的整数、浮点数、布尔数转成其对应的值类型数据。

val s1:String = "100"
val s2:String = "2.3"
val s3:String = "false"

val a:Int = s1.toInt
val b:Double = s2.toDouble
val c:Boolean = s3.toBoolean

8.键盘输入

步骤:
1.导包

import scala.io.StdIn

2.通过StdIn.readXxx()来接收用户键盘录入的数据
接受字符串数据:

StdIn.readLine()

接收整数数据:

StdIn.readInt()

示例:
提示用户录入字符串和整数,并接收打印。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值