Scala基础
一、安装scala
- idea安装scala插件

在Plugins搜索scala安装

- 在windows上安装scala
Scala安装包
提取码: rqna
安装完成,配置环境变量后cmd命令窗口,使用scala命令开启scala

二、Scala概述
1.面向对象特性
a)每个值都是对象
b)对象的数据类型和行为由类(Class)和特征(Trait,类似于interface)描述
c)利用特征实现混入式多重继承
2.函数式编程
a)每个函数都是一个值
b)支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配……
4.Scala是静态类型语言
5.扩展性:隐式类、字符串插值
三、Scala常量变量
变量
定义:var 变量名称:类型=xxx

常量
定义:val 常量名称:类型=xxx

注:一般不指定类型,scala编译器会自动推断类型
四、使用类型别名定义变量
注:此方法一般不使用,可直接定义变量
使用type关键字
定义:type 类型别名=类型
type T=String
val T="XXX"

五、Scala数据类型层次结构
注:Scala基本数据类型与java基本一致
any:所有类型的父类
anyval:表示值类型的父类
anydef:表示引用类型的父类,对应java的object
unit:无返回值
nothing:所有类型的子类
null:表示null或空引用

六、字符串插值
s插值器
允许将变量引用、表达式直接插入字面字符中
val name="xxx"
println(s"Hello,xxx") //Hello,xxx
println(s"1+1=${1+1}") //1+1=2
f插值器
val height=1.9d
val name="xxx"
println(f"$name%s is $height%2.2f") //f前面数字表示占位符(位数不够可拓展,位数多则空位表示),后面数字表示小数点后位数
raw插值器
print(s"a\nb") //会换行输出
print(raw"a\nb") //输出原始字符a\nb

七、Scala条件控制
if语句
val a=10
if(a>0){
print("a大于0")
}
if…else语句
val a=10
if(a>10){
print("a大于10")
}else if(a==10){
print("a等于10")
}else{print("a小于10")}
注:用法基本与java相同
八、条件语句返回值
scala任何表达式都有返回值
val x=10
val y=if(x==10) x+1 else x+2
代码块{…} 也是表达式,返回值为最后一个表达式结果
val x=1
//返回结果为2
val y={
println("代码块y1")
x+1
}
println(y)
//返回结果为()
val y2={
x+1;println("代码块y2")
}
println(y2)
九、Scala循环控制
- while循环
//输出0-100
var x=0;
while(x<=100){
println(x)
x=x+1
}
- do-while循环
//输出0-99
var x=0;
do{
println(x)
x=x+1
}while(x<100)
- for循环
var num=10
//输出1-10
for(i <- 1 to num){
println(i)
}
//输出1-9
for(x <- 1 until 10){
println(x)
}
- 中断
注:by表示步长
方式一:
//引入break包
import scala.util.control.Breaks._
var num=10
breakable{
for (x<- num to 1 by -1){
if(x<3) break
println(x)
}
}
方式二:
import scala.util.control.Breaks
var num=10
val loop=new Breaks
loop.breakable{
for (x<- num to 1 by -1){
if(x<3) loop.break
println(x)
}
}
- for循环过滤
var i=100
for(x<- 1 to i;if x%2==0;if x%5==0){
println(x)
}
- for循环返回值
for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。也称for推导式
var i=100
val res=for(x<- 1 to i;if x%2==0;if x%5==0) yield x
println(res)

十、Scala数组
存储固定大小的元素
数组索引从0开始
//创建方式一
var arr1:Array[String] =new Array[String](3)
arr1(0)="Hello"
arr1(1)="World"
arr1(2)="Scala"
println(arr1(0),arr1(1))
//创建方式二
var arr2=Array("Hello","world","scala")
1万+

被折叠的 条评论
为什么被折叠?



