一、初识Scala
1、语言介绍
- 是多范式的编程语言,集成了面向对象和面向函数编程的各种特性
- 运行在Java虚拟机上,并且兼容现在的Java代码
-
2、语言特点
面向对象:一种纯面向对象的语言,每个值都是对象
- 函数式编程:函数式语言,函数也可以当成值来使用,提供匿名函数和高阶函数。允许嵌套多层函数,支持柯里化。
- 静态类型:通过编辑检查
- 扩展性:可以以库的形式添加语言结构
并发性:并没有在底层对并发性升级,使用actor作为并发模型
二、Scala基础语法
1、数据类型
皆为对象属性,没有原生数据类型
Unit:为空或者无值,与void相似
- Null:即为空
- Nothing:是所有类型的子类型。
- Any:是所有类型的父类(类似object)
- AnyRef:是所有引用类型的父类
- AnyVal:是所有值类型的父类,包括九个值类型。
Byte、short、int、long、double、float、char、String、boolean
2、变量
常量:用 val 来声明常量。
例如 val name:string = “张三”
变量:用 var 来声明。
例如 var varstring:string = “name”
3、访问修饰符
scala的访问修饰符包括 private protected public,对象的访问默认级别都是public
private:仅在对象或类的内部可用
class TestPrivate {
class Persion{
private def testPrivate(){
println("private method");
}
def testpublic(): Unit ={
println("public method")
}
class boy{
testPrivate()
testpublic()
}
}
(new Persion()).testpublic();
}
4、控制语句
//if...else
if (age<12){
println("我没到12")
}else{
println("我大于12")
}
//while循环
while (age<15){
println(age)
age+=1
}
//for循环
for (a<- 0 to 10 by 2){
println(a)
}
//集合循环
var list = List("1","2","3","4")
for (temp<-list){
println(temp)
}
//循环中带过滤
var list = List("1","2","3","4","5")
for (temp<-list if(temp!="2")){
println(temp)
}
//for 循环加入 yield 返回结果集合
var reslist = for (temp<-list if(temp<"3")) yield temp
for (temp1 <- reslist){
println(temp1)
}
5、方法与函数
1、两者的区别和联系
- 在Scala中,绝大多数情况下是相同的
- 方法是类的一部分,函数是一个对象,可以赋值给一个变量,在类中定义的函数即是方法
- Scala中 val定义函数,def定义方法
2、方法定义
def functionName (参数列表):返回值类型{
方法体
}3、闭包
概念:闭包是个函数。函数计算的过程依赖于声明在函数外部的一个或多个变量
实例:
```scala def main(args: Array[String]): Unit = {
} //闭包 var i = 1000; def fun02(a:Int):Int={ return a+i }println(fun02(2));
<a name="PY9qV"></a>
## 6、字符串
在Scala中字符串的类型其实是Java string,它本身没有string类<br />不可变字符串创建:
```scala
//不可变字符串创建实例
var name = "苗宏凯";
//可变字符串创建实例
var str1 = new StringBuilder;
str1.append("123")
str1.append("444")
str1.append("555")
println(str1)
输出结果为123444555
7、数组
1、概念:用来储存固定大小的同类元素,数据是通过索引访问的
2、数组的定义:
//静态数组
var arr1 = Array("111","222","123","7767","ddd")
//动态数组
var arr2 = new Array[String](3)
arr2(0) = "888"
arr2(1) = "222"
arr2(2) = "900"
for (temp4<- arr2){
println(temp4)
}
3、多维数组
多维数组即是数组的数组
//多维数组
var arr3 = Array.ofDim[Int](4,4)
for (i <- 0 to 3) {
for ( j <- 0 to 3) {
arr3(i)(j) = j;
}
}
//遍历多维数组
for (i <- 0 to 3){
for ( j <- 0 to 3) {
println(arr3(i)(j))
}
}
数组合并用concat
生成区间数组.
//生成区间数组
var arr4 = Array.range(10,20,2)
for (temp5<-arr4){
println(temp5)
}