目录
一、Scala介绍
官网:http://www.scala-lang.org
1、概述
Scala即是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和扩展时提供优雅的层次结构,并可以通过高阶函数来实现这样的目标。(高阶函数是函数式编程里的特性之一,允许函数作为参数传递,也允许函数作为返回值来返回)
创始人:Martin Odersky马丁·奥德斯基,他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦。他编写了javac,这是目前大部分Java程序员所使用的编译器。他也编写了Scala编译器scalac。
2、Scala语言的特点
Scala并不适用于编程的初级课程,反而它是为专业程序员定制的强力语言。
1)它是一门现代编程语言,作者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等语言的影响。
2)它即是一门面向对象(OOP)语言,每个变量都是一个对象,每个“操作符”都是方法。scala语言在面向对象的方面,要比java更彻底。
3)它同时也是一门函数式(FP)编程语言,可将函数作为参数传递。可以用OOP与FP结合编写代码。
4)Scala代码通过scalac编译成.class文件,然后在JVM上运行,可以无缝使用已有的丰富的Java类库。即Scala的代码会编译成字节码,运行在Java虚拟机(JVM)上。
5)接触语言的第一天你就能编出有趣的程序,但是这门语言很深奥,随着学习的深入,你会发现更新、更好的编写代码的方式。Scala会改变你对编程的看法。针对同一任务,可以有很多种不同的实现方式,并且可读性以及性能都有不一样的体现。
二、Scala Windows运行环境配置及使用
1、安装步骤
①、安装scala-2.11.7.msi,一直下一步就行
②、添加scala安装目录的bin目录的路径到系统的环境变量中
③、通过cmd命令窗口,输入scala
2、两种模式
交互模式:可以通过命令行直接输入scala命令,比如:
编译模式:也可以先编写 ***.scala文件,通过执行文件来执行命令,比如:
先在D盘下创建一个scala.scala文件
然后通过cmd运行:
3、使用IDE来开发Scala
我们可以使用eclipse或者IDEA来进行scala的开发:
①、eclipse
eclipse我推荐一款集成scala插件的版本
直接解压就可使用:
打开后是这样的:
②、IDEA
idea我们可以安装scala的插件:
然后重启新建项目:
寻找本机安装的scala
选择scala的安装文件
然后创建即可:
三、Scala基础语法一
1、基础
语句 | 说明 | 示例 |
var | 用来声明一个变量,
| |
val | 用来声明一个常量, | ![]() |
操作符 | scala中操作符即方法,方法即操作符 所以 可以认为 scala中并没有传统意义上的操作符 所有的操作符都是方法 所有的方法也都可以像操作符一样去使用 | 算术运算符 + - * / % 关系运算符 == != > < >= <=== > < >= <= 逻辑运算符 && || ! 位运算符 ~ & | ^ << >> >>> 赋值运算符 = += -= *= /= %= |
2、类型转换
scala的类型转换,形式固定:to指定类型。比如:toInt toString toLong toArray toList
3、scala运算符
①、算术运算符
②、关系运算符
③、逻辑运算符
④、位运算符
⑤、赋值运算符
4、基础语法
object ScalaDemo02 {
def main(args: Array[String]): Unit = {
println(1+2*3) //结果位7
println(1.+(2).*(3)) //结果为9
val num =8
val result =if(num>5){
println("big") //打印big
100
}else{
println("small")
200
}
println(result) //返回值为 100
val result02=if(num>5) "big" else "small"
println(result02) //result02 为big
if(num>5){
println("big") //结果打印big
}else if(num==5){
println("equal")
}else{
println("small")
}
val a1=Array(1,2,3,4)
var index=0
while(index<a1.length){
println(a1(index)) //结果遍历数组,换行输出 1 2 3 4
index+=1
}
}
}
四、Scala基础语法二
1、for循环
scala中的for要比java的for强大,使用很频繁,需要熟练掌握。
object ScalaDemo03 {
def main(args: Array[String]): Unit = {
//生成一个1~100的区间,区间类型是range
val a1 = 1 to 100
//循环遍历并打印
for(i<-a1){
println(i)
}
//支持条件过滤
for(i<-a1;if i >50){
println(i)
}
//支持多条件过滤
for(i<-a1;if i>50;if i%2==0;if i<90){
println(i)
}
//也可以写成下面的形式
for(i<-1 to 100;if i>50&&i<90&&i%2==0){
println(i)
}
}
}
九九乘法表:
// 方法一
for (i<-1.to(9)){
for(j<-1.to(i)){
print(i+"*"+j+"="+i*j+"\t")
}
println()
}
// 方法二,必须是常量(val)连接
for(i<-1.to(9);j<-1.to(i);val sep=if(i==j)"\r\n" else "\t"){
print(i+"*"+j+"="+j*i+sep)
print(s"$i*$j=${i*j}$sep") // 两种打印方法
}
2、for yield
for yield表达式:遍历一个集合,并将操作的数据返回到一个新的集合中
scala的集合是大的概念,常见的:Array,List,Set,Range,Iterator,Map
for yield 遍历的是什么集合类型,则返回对应类型的新集合。
val arr = Array(1,2,3,4)
val arr1=for(i<-arr)yield {i*2}
for(i<-arr1)print(i) // 2468
val list = List(1,2,3,4)
val list1=for(i<-list)yield {i*2}
for(i<-list1)print(i) // 2468
val map = Map("tom"->23,"jary"->30,"yang"->24)
//遍历map的k,v对
for(i<-map)print(i) //(tom,23)(jary,30)(yang,24)
//通过二元元组形式来遍历map
for((k,v)<-map)print(k) //tomjaryyang