scala的简单总结
文章目录
一、scala的概述
1.1学习Scala的原因
spark需要scala来编写
1.2scala诞生小故事
创始人:Madin Ordersky
1.3Scala和Java以及JVM的关系图
使用相同的类库、各有自己的编译器、都要转为xxx.class,再到JVM上运行
1.4Scala语言的特点
Scala是一门以java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。
1)多范式(面对对象和函数式)
2)被编译为java字节码(.class)
3)三元运算符(++ --)
1.5各种操作系统环境下搭建Scala
略
1.6Scala开发工具介绍
1)IDEA
2)Scala插件
1.7Scala快速入门(idea-hello工程)
1)maven
2)add framework support——引入Scala框架
3)src-main-scala为源文件目录(初次使用需要source root)
1.8Scala执行流程
待补充
1.9Scala注意事项(重)
1)源文件为xxx.scala
2)入口为main()
3)严格区分大小写(重)
4)无需分号,自动加入
5)单行多语句初最后一行都需要分号
1.10Scala转义字符
同C(\t,\r,\,\n……)
1.11Scala语言输出的三种方式
1)字符串加号连接(print(str1 + str2))
2)%传值(类C)
3)$引用变量(类php)
print(s"name = $str1 age = ${num + 1}")
1.12查看源码关联
1)ctrl + b
2)没有(待补充)
1.12注释
1)单行
//……
2)多行
“/* 注释内容 */”
3)文档
多行注释嵌套
1.13良好的编程规范
1)tab 与 shift tab实现缩进
2)cttrl + alt + L实现一键规范
3)运算符两边空格
4)单行不超80字符
二、变量
2.1变量是程序的基本单位
2.2变量的使用
1)声明变量(Scala要求声明变量时初始化)
val | var 变量名 [:变量类型] = 变量值(类型可以省略—类型推导)
var age :Int (或double) = 10
Scala中整数默认为int,小数默认为double
2)注意事项
- 声明变量时,类型可以省略(编译器自动推导)
- Scala是强类型语言,类型确定后不能修改
- val修饰不可改变变量,var修饰可改变变量
3)val对象的状态可以改变(待议)
2.3变量之间的“+”
1)左右为数值时做加法
2)左右为字符串时做连接
2.4数据类型
1)Scala与Java有着相同的数据类型,Scala中的数据类型都是对象
2)Scala类型分为两大类AnyVal(值类型)与AnyRef(引用类型)
3)数据类型一栏图
几点说明
Null是一个特别类型,只有一个null值
Nothing是所有类的子类,常用它返回任意值或函数,常异常返回值
def sayhello :Nothing = {
throw new Exception(“抛出异常”)
}
4)Scala中支持低精度值向高精度值自动转换(隐式转换)
2.5整数类型
Bety | Short | Int | Long (声明为Long型时数字后加“l | L”)
2.6浮点类型
Float | Double (声明为Float,时数字后加“f | F”)
2.7字符类型
char字符 | Unicode字符
使用细节
char----‘’单引号
转义字符-----\
char类型可以进行计算(有自己的Unicode)
2.8布尔类型
值为 ture | false (占一个字节)
2.9Null类型、Unit类型、Nothing类型使用技巧
待补充
2.10值类型转换
1)隐式转换
2)自动提升原则
3)byte,short,char 他们三者可以计算,在计算时首先转换为 int 类型
2.11高级隐式转换和隐式函数
略
2.12强制类型转换
将精度大的转换为精度小的,可能造成精度溢出
scala : var num : Int = 2.7.toInt //对象
Char 类型可以保存 Int 的常量值,但不能保存 Int 的变量值,需要强转
Byte 和 Short 类型在进行运算时,当做 Int 类型处理
2.13值类型和 String 类型的转换
1)基本类转String类
语法: 将基本类型的值+"" 即可
eg;val num = d1 + “” //以后看到有下划线,就表示编译器做了转换
2)String类型转其他类型
val num = d1.toSting
3)注意
- 确保String类型有效
2.14命名规范
1)标识符;和Java一样
2)包名:尽量采取有意义的包名,简短,有意义
3) 变量名、函数名 、方法名 采用驼峰法
4)注意关键字
三、运算符
四、程序流程控制
五、函数式编程基础
六、面向对象编程(基础)
七、面向对象编程(中级)
八、面向对象编程(高级)
九、隐式转换与隐式值
十、数据结构(上)
十一、数据结构(下)
十二、模式匹配
十三、函数式编程(高级)
十四、使用递归的方法去思考和编程
名,简短,有意义
3) 变量名、函数名 、方法名 采用驼峰法
4)注意关键字