1.为什么要学习scala
因为我们之前学的hadoop生态圈都是处理离线计算的
spark是一个在线计算的框架它的底层是scala语言实现所以得先了解scala语言
scala语言的优点
1. 在线计算
2. 基于Java语言,开发效率高,运行效率快
2.scala语言的介绍
scala语言是一门多范式的编程语言,即面向对象也是函数式编程
面向对象:万物皆对象、封装、实例对象、类、继承
函数式编程:面向过程、函数当成编程
3.与java语言的对比
相同点:
1. java和scala可以无缝混编、它们都是基于jvm
2. 二者可以相互调用
不同点
1. scala语言类型自动推断,并如果写类型的话,是写在变量名的后面
2. val 是修饰常量 var是用来变量
3. 支持函数式编程
4. 构造器不一样
5. Java中可以自动默认值,scala中必须手动给默认值
6. scala不需要分号,但是java必须要有
7. get set 方法自己实现
8. java中的返回值用return scala中不用return
4.编译工具的安装
1.jdk肯定都有
2.idea开发工具
3.插件安装(离线和在线都可以)
scala-intellij-bin-2017.2.2.zip(一个插件就搞定了)
然后中重启一下idea就好了
5.main方法的讲解
6.常量和变量
定义
常量:是在运行过程中,其值不会发生变化的量 例如:数值3 字母A 修饰的关键字val
变量:是在运行过程中,其值可以发生变化的量 例如:时间,年龄,修饰的关键字var
语法
val name:Type=变量值
var name:Type=变量值
注意1
类型可以不写,scala可以自动类型推断
注意2变量名必须符合命名规范
1. 不能使用关键字(命名规范和java一样)
2. 字母、下划线、数字、美元符号组成的,并且不能用数字开头
例如错误示范:val 4_tablename=“t_user”
3. 变量名要做到见名知意,(英文不好可以通过相关软件查询)
4. 用驼峰命名法命名多个单词组成的变量名
val tableName="t_user"
7.scala中的数据类型
Any是所有类的超类,也称为顶级类型
AnyVal是代表值类型
AnyRef是代表引用数据类型
Nothing是所有类型的子类型,也称为底部类型。没有一个值是Nothing类型的
详细介绍类型
8.懒加载
好处:不占用内存只会在调用时被调动 用lazy修饰的常量
第一次输出的效果
第二次的效果
直接就可以一目了然了
9.插值器
scala中有三种插值器
1.在任何字符串前面加上s,就可以直接在字符串中使用变量了
2.f插值器存在四舍五入的功能
3. raw插值器:是输入字符串原样,不进行转义
10.访问修饰符
private:一个类的内部使用
protected:自己类 子类也可以被访问(这个比java更加严格,java同一个包的其他类也可以访问)
public:如果没有指定修饰符,这样的成员在任何地方都可以被访问