大数据学习06 Scala的基础语法
Posted 燕大扎克伯格
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据学习06 Scala的基础语法相关的知识,希望对你有一定的参考价值。
大数据学习06 Scala的基础语法
介绍Scala的基础语法
文章目录
前言
上一文章介绍了Scala的入门级项目,现在来学习Scala的基础语法
一、注释
和java一样
单行注释为//
多行注释为
/*
*
*
*/
二、变量与常量
1.基本语法
var 变量名 [:变量类型]=初始值 var i:Int=10
val 常量名 [:常量类型]=初始值 val j:Int=20
注意:能用常量的地方不用变量
2.代码实操
代码如下(示例):
package chapter02
import chapter01.Student
object Test02_variable
def main(args: Array[String]): Unit =
//声明一个变量的通用语法
var a:Int=10;
//(1)声明变量时,类型可以省略,编译器自动推导
var a1=10
val b1=23
//(2)类型确定后,就不能更改,说明Scala是强数据类型语言
var a2=15//a2为Int
//a2=1.5 //会报错
//(3)变量声明时必须有初始值
//var a3:Int
//(4) 在声明定义一个变量时,可以使用var或者vral来修饰,var修饰的变量可以改变,val修饰的变量不可以改变
a1=11
//b1=20 //会报错
var lll = new Student("lll", 11)
lll=new Student("All",20)
lll.printInfo()
lll=null
var bbb=new Student("bbb",23)
bbb.printInfo()
//为了让其可以更改,需要在Student类中的age属性前加上var
bbb.age=20
bbb.printInfo()
package chapter01
class Student(name: String, var age: Int)
def printInfo(): Unit =
println(name +" "+age+" "+Student.school)
//伴生对象
object Student
val school:String="YSU"
def main(args: Array[String]): Unit =
val lll= new Student("lll", 22)
lll.printInfo()
三、标识符的命名规范
Scala对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符
1.命名规范
(1)以字母或下划线开头,后接字母、数字、下划线
(2)以操作符开头,且质保函操作符( + - * / # ! 等)
(3)用反引号’……'包括任意的字符串,即使是Scala关键字也可以
2.字符串输出
类似java
(1)字符串,通过+号连接
(2)printf用法::字符串,通过%传值
(3)字符串模板(插值字符串):通过$获取变量值:s,f,raw
package chapter02
object Test04_String
def main(args: Array[String]): Unit =
//字符串,通过+连接
val name:String="all"
val age=11
println(name+":"+age)
//*用于讲一个字符串复制多次拼接
println(name * 5)
//(2)printf用法::字符串,通过%传值
printf("%d岁的%s开始学习了\\n",age,name)
//(3)字符串模板(插值字符串):通过$获取变量值
println(s"$age岁的$name开始学习模板字符串")
val num:Double=2.34567
println(s"the number is $num")
//格式化字符串
println(f"the number is $num%2.2f")
//raw转义字符等任何字符都会被原封不动的输出
println(raw"the number is $num%2.2f")
//三引号表示字符串,保持多行字符串的原格式输出
val sql=s"""
|select *
|from
| student
|where
| name=#name
|and
| age>$age
|""".stripMargin
println(sql)
3.调试效果
四、控制台标准输入
1.代码实现
package chapter02
import scala.io.StdIn
object Test05_StdIn
def main(args: Array[String]): Unit =
//输入信息
println("请输入您的姓名:")
val name:String=StdIn.readLine()
println("请输入您的年龄:")
val age=StdIn.readInt()
//控制台打印输出
println(s"欢迎$age岁的$name来此学习")
2.调试效果
五、IO文件读取
1.代码实现
package chapter02
import java.io.File, PrintWriter
import scala.io.Source
object Test06_FileIO
def main(args: Array[String]): Unit =
//1. 从文件中读取数据
Source.fromFile("src/main/resources/test.txt")foreach(print)
//2.将数据写入文件
val writer=new PrintWriter(new File("src/main/resources/OutPut.txt"))
writer.write("一个人热切地想得到的东西,想从拥有它们的人手里得到\\n" +
"或者夺到的东西,往往总是被那些人死死地看守住的\\n" +
"因而,我们的过错\\n" +
"十有八九是在‘必需如此’的似是而非的借口下铸成的。")
writer.close()
2.调试结果
六、数据类型
Java的基本类型:char,byte,short,int,long,float,double,boolean
Java的引用类型:(对象类型)包装类:Character,Byte,Short,Integer,Long,Float,Double,Boolean
Scala的数据类型
1.数据类型的说明
1)Scala中一切数据类型都是对象,都是Any的子类
2)Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
3)Scala数据类型仍然遵守低精度的值类型向高精度值类型,自动转换(隐式转换)
4)Scala中的StringOps是对Java中的String增强
5)Unit对应Java中的Void,用于方法返回值的位置,表示方法没有返回值。Unit是一个数据类型,只有一个对象就是**()**,void不是数据类型,只是一个关键字
6)Null是一个类型,只有一个对象就是null。它是所有引用类型(AnyRef)的子类。
7)Nothing,是所有数据类型的子类,主要用于在一个函数没有明确的返回值时使用,因为这样,我们可以把跑出的返回值,返回给任何的变量或者函数。
2.Util类型,Null类型和Nothing类型
数据类型 | 描述 |
---|---|
Unit | 表示无值,和其他语言中void等同,用作不返回任何结果的方法的结果类型,Unit只有一个实例值,写成() |
Null | null,Null类型只有一个实例null |
Nothing | Nothing类型在Scala的类层次最低端;它是任何其他类型的子类型。当一个函数,我们确定没有正常的返回值,可以用Nothing来制定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋值给其他的函数或者变量(兼容性) |
3.代码实操
package chapter02
import chapter01.Student
object Test07_DataType
def main(args: Array[String]): Unit =
def m1():Unit=
println("m1被调用执行")
//1.Unit
val a=m1()
println("a:"+a)
//2.空引用Null
val n=1
// val n:Int=null
//值类型无法连接空引用
var student=new Student("all",18)
student=null
println(student)
//5.3 Nothing
def m2(n:Int):Int=
if(n==0)throw new NullPointerException
return n
// val b=m2(0)
// print(b)
val c=m2(3)
print(c)
4.调试结果
总结
以上是Scala的基础语法
以上是关于大数据学习06 Scala的基础语法的主要内容,如果未能解决你的问题,请参考以下文章
2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握