一.scala基础篇
数据类型:与java相似部分 这几个都为对象,无数据类型
Byte,Short,Int,Long,Float,Double,Char,String,Boolean
变量
常量:用val声明
变量:用var声明
访问修饰符:
private: 尽在包含了成员定义的类或对象内部可见
在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员
三.运算符
与Java一样
四.控制语句
if …else ,while,do…while与java无异
for循环不同
for形式定义
for(x <- Range ){
statement(s);
}
Range可以是一个数字区间表示,i to j 左右全闭区间 , i until j 左闭右开
<- 用于为变量x赋值
双变量循环
object TestControlSentence {
def main(args: Array[String]): Unit = {
var end = 5;
var begin = 1;
for(x <- begin to end;j <- begin to end){
println(x+"*"+j)
}
}
}
五.方法与函数
两者的区别
1.用val定义函数,def语句定义方法
2.方法是类的一部分,函数是一个对象,可以赋值给一个变量
方法的定义
定义格式
def functionName ([参数列表]) : [return type 返回值类型] = {
function body
return [expr]
}
不写等于号和方法主体,为抽象方法
无返回值,返回值类型可以写Unit
返回时可写return,也可以不写,不写则表示最后一个变量为返回值
参数可以逗号分割
方法的调用
调用说明
当不需要实例化对象时,functionName(参数列表)即可
当需要实例化对象时,为instance.functionName(参数列表)即可
六.闭包
概念
闭包是个函数
函数的计算过程,依赖于在函数外部的一个或者多个变量
七.字符串
概念介绍
在 Scala 中,字符串的类型实际上是 Java String,它本身没有 String 类。
完全与java.lang.String对等
可变字符串的创建(StringBuilder):
stringBuilder += '1' stringBuilder ++= "234" stringBuilder.append("567")
字符串的格式化printf:
printf("我是%s,我在%s,我做%s,我今年%d岁了",name,location,work,age);}
八.数组
静态数组:
var programLanguageArray = Array("java", "python", "c++", "c", "php")
动态数组:
var programLanguageArray = new Array[String](5)
programLanguageArray(0) = "java";
多维数组
多维数组(>=2)即为数组的数组,与Java中概念等同
数组中的元素即可以是实体的值,也可以是一个数组,且可以嵌套
数组合并
var numberList1 = Array(1, 2, 3, 4)
var numberList2 = Array(5, 6, 7, 8)
var mergeList = concat(numberList1, numberList2)
创建区间数组
range(start,end,step) 方法来生成一个区间范围内的数组
range(start,end,step) 方法最后一个参数为步长,默认为 1
是半包区间,包含起始值,不包括结束值,即start<=x<end
var numberList1 = range(1, 5, 2)
二.函数的高级应用
-
函数传名调用
概念说明
传值调用
传值调用:先计算参数表达式的值,再应用到函数内部,把=>去掉即可,即按原始的方式
传名调用:将未计算的参数表达式直接应用到函数内部,用=>来设置传名调用 -
指定函数参数名调用
-
可变参数的函数
-
默认参数值函数
-
递归函数
-
高阶函数
概念说明
第一种:将一个函数当做另外一个函数的参数,即参数为函数的函数
第二种:返回值是函数的函数,即高阶函数可以产生函数 -
内嵌函数
概念介绍
函数内定义函数,定义在函数内的函数称之为局部函数,亦称内嵌函数 -
匿名函数
概念介绍
没有函数名称的函数
使代码更简洁,用=>来表示,左侧是参数列表,右侧是函数体 -
偏应用函数
概念说明
不需要提供函数需要的所有参数,只需要提供部分,或不提供所需参数
实现方法:绑定函数的一部分参数,非绑定部分用"_"代替,从而形成偏应用函数去使用 -
函数柯里化
概念说明
将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
提高了使用方法的灵活性
三.scala进阶之集合
Scala List
类似于数组,要求所有元素的类型都相同,通过范型来约束
列表是不可变集合,一旦定义了就不能改变
列表具有递归定义的性质,可以嵌套定义,这是与数组最大的不一样。
用Nil和::来构建列表 形成可变效果
• 常用操作
head 返回列表第一个元素
tail 返回一个列表,包含除了第一元素之外的其他元素
isEmpty 在列表为空时返回true
::: 运算符或 List.::