Scala初识

一:Object、Trait、Class

二:scala类型

三:基本操作



一:Object、Trait、Class

Scala三个类:Object、Trait、Class 区别与联系

trait 是介于抽象类和接口中间,多继承;trait 里面可以有方法体,Java的接口就不能有;trait又和抽象类不一样,它可以多继承,并且是无参数构造器;所以是介于两者之间的,它的出现就是为了多继承,并且能写实体的方法的类。

class和object的区别与联系:class就是Java的class类,object就是Java的 static关键字;如果class名字和object的名字相同,那么class是object伴生类

object是class的伴生对象,两个可以相互访问对方的private变量和方法

0?wx_fmt=png

0?wx_fmt=png

创建了一个ojbect 类,类似于Java的static 关键字

0?wx_fmt=png

里面你可以写main方法 ,程序入口 ,也可继承APP默认执行里面代码

0?wx_fmt=png

声明了两个字段,var 声明的是变量,val声明的是常量

0?wx_fmt=png

常量就是不可更改例如

0?wx_fmt=png

二:scala类型

scala类型图:

0?wx_fmt=png


scala的超类是any,类似于 Java里面的 object,引用类型的空是null。各个空值讲解如下图:

0?wx_fmt=png

基本类型讲解如图:

0?wx_fmt=png

option操作类型:这个类型出现是为了防止引用类型出现空指针异常

例如:你通过下标去访问array超出数据界限时候Java会返回nullexception,scala会返回none。none是option一个值类似于boolean有两个值一样。

代码如下

val myMap: Map[String, String] = Map("key1" -> "value")

val value1: Option[String] = myMap.get("key1")

val value2: Option[String] = myMap.get("key2")

 

println(value1) // Some("value1")

println(value2) // None

0?wx_fmt=png

例如上图讲解map的访问和使用

一般我们申请的map都是不可变对象,还有list也是不可变对象,如果想用可变对象。如下图

0?wx_fmt=png

三:基本操作

1.scala的if else和java一样

0?wx_fmt=png

2.Java switch在scala中是match如图:

0?wx_fmt=png

3.类里面方法里面声明变量,一定要加修饰符var ,val;不加会报错:

0?wx_fmt=png

0?wx_fmt=png

4.scala里面的循环和Java的一样,如图

0?wx_fmt=png

for循环里面有点区别,for条件后面可以跟一个yield返回循环出来的结果值

0?wx_fmt=png

 for(i <- 0 to 100 if (i % 2) == 1 ) 这里面的if是卫句起到过滤作用


更多关于hadoop,spark和机器学习文章请关注本文公众号:

640?wx_fmt=jpeg