Scala入门

1.为什么要学习scala?
2.scala的介绍
3.与java语言的对比
4.编译工具的安装
5.main方法讲解
6.常量和变量
7.数据类型
8.懒加载
9.差值器

1.为什么要学习scala?
(1)spark底层是用scala来 ,要想学好spark 我们就必须会scala这门语言
(2)scala语言有自己的有事无论是在变成的效率还是执行速度
离线计算 -->
在线计算 -->spark底层是用scala来 ,要想学好spark 我们就必须会scala这门语言
2.scala 语言的介绍
scala 是一门多范式的编程语言,及时面向对象也是函数式编程
面向对象:万物皆对象 封装 实例对象 类 继承
函数式编程: 面向过程 函数当成编程

问题1:什么是多范式?
多范式 :多种形式编程 常见的有过程式 函数式,泛型编程
面向对象 :把数据和数据的操作方法放在一起,作为一个相互依存的整体
函数式编程:把函数可以当成变量使用
函数式scala的一等公民
一等公民的特权:
1.函数可以传递和赋值
2.scala中可有嵌套函数和匿名函数
3.scala中支持高阶函数
4.scala还支持偏函数
5.scala支持闭包
3.scala语言和Java语言对比
相同点:
1.java和scala可以无缝混编,它们都是基于jvm
2.二者可以相互调用
不同点:
1.类型自动推到
2.val var
3.支持函数式编程
4.构造器不一样
5.java中可以自动默认值,scala中必须手动给默认值
6.scala 不需要分号,但是java 必须要有
7.get set 方法自己实现
age:相当于java中的getter方法
age_$eq:相当于java中set方法
8.java中的放回只用return scala 中没有return

		9.

4.编译工具的安装
1)jdk
2)idea
3)插件安装(离线和在线都可以)
scala-intellij-bin-2017.2.2.zip (一个插件就搞定了)
4)创建一个scala项目测试一下
5)字体背景稍微调整一下

5.main方法讲解
main(static=object)
1)语法
关键字 方法名 (参数):放回只类型={
}
def main(args: Array[String]): Unit = {

}

6.常量和变量
1)定义
常量:是在运行的过程中,其值不会发生变化的量 例如:数值3 字母A 修饰的关键字val
变量:是在运行的过程中,其值可以发生变化的量 例如:时间,年龄 修饰的关键字var
2)语法
val name:Type=变量值
var name:Type=变量值
注意1:
类型可以不写,scala 可以自动类型推到

注意2:变量名称必须符合命名规范,不能使用关键字(命名规范和java一样)
	1.字母,下划线,数字组成,并且不能以数字开头
		val 4_tablename="t_user";
	2.变量名要做到见名知意,(如果英文不好我们通过通过有道翻译)
	3.用驼峰命名法命名多个单词组成的变量名
		val tablename="t_user";
	4.变量名不能使用关键字
		val def =12

7.scala中的数据数据类型
any是所有类型的超类,也成为顶级类型
anyVal (值类型) :
int short byte long double string char boolean Uint (9个)
长度4 2 1 8 8 4 2 1
anyRef(引用类型) :
List map option yourclass …
注意:java类型中没有和scala中Nothing对应的类型

8.懒加载
1)scala 中使用lazy 关键字修饰变量,就是惰性变量,实现延迟加载
注意:惰性变量只能是不可变变量,并且只有在调用惰性变量时,才会去实例化这个变量
2)案例演示
//正常的
var str = {
println(“helloworld”)
}
//懒加载的形式
lazy val str1 = {
println(“helloworld”)
}
//调用这个变量
str1
3)好处
使用在比较耗时的业务中,如网络IO 磁盘IO 场景:
9.差值器
scala中有三种插值器
1.在任何字符串前面加上s,就可直接在字符串中使用变量了
val name:String=“cat”
println(s"she is name is n a m e " ) 2. f 插 值 器 : v a l h e i g h t = 1.23568 p r i n t l n ( f " 身 高 是 {name}") 2.f插值器: val height=1.23568 println(f"身高是 name")2.f:valheight=1.23568println(f"{height}%.2f")

		3.raw插值器:是输入字符串原样,不进行转义 
		例如:
		//没有使用raw
		    println("a\nb\n\tc")
		//使用的效果
			println(raw"a\nb\n\tc")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值