scala基础知识复习
最近都不能去武汉了,只能在家宅着。我们还是来复习一下平时的最基础的scala的知识吧。
1.1 那我们开始最基础的hello,world吧
package com.mazh.scala.helloworld
object HelloWorld { // 作用类似于 java 中的 main 方法
def main(args: Array[String]): Unit = {
println("hello world")
} }
1.2、变量定义
package com.mazh.scala.core
object VariableDemo {
def main(args: Array[String]) {
// 使用 val定义的变量值是不可变的,相当于 java里用 final修饰的变量
val i = 1
// 使用 var定义的变量是可变得,在 Scala中鼓励使用 val
var s = "hello"
//Scala 编译器会自动推断变量的类型,必要的时候可以指定类型
// 变量名在前,类型在后
val str: String = "spark"
}
}
总结:
1)数据类型可以指定,也可以不指定,如果不指定,那么就会进行数据类型的自动推断。
2)如果指定数据类型,数据类型的执行方式是在变量名后面写一个冒号,然后写上数据类 型。
3)我们的 scala 里面变量的修饰符一共有两个,一个是 var,一个是 val 如果是 var 修饰的变量,那么这个变量的值是可以修改的 如果是 val 修饰的变量,那么这个变量的值是不可以修改的
4)scala语言是懒加载的,这个和java还是有很大的区别的。
1.3、数据类型
1.3.1、数据类型概述
Scala 和 Java 一样,有 7 种数值类型 Byte、Char、Short、Int、Long、Float 和 Double(无包 装类型)和一个 Boolean 类型,再加上常用的 String 类型
数据类型:http://www.runoob.com/scala/scala-data-types.html 菜鸟教程
注意:scala 里面没有基本数据类型和包装类型之说。 如果大家非要说的话,那么大家都可以认为都有的类型的类型都是包装类型。
package com.mazh.scala.core
object TypeDemo {
def main(args: Array[String]): Unit = {
val var_int = 1
val var_double = 3.33
val var_float = 2.4F
val var_char = 'A'
val var_bool = true
val var_16 = 0x29
val var_string = "aa"
val var_string1 = "\"huangbo\""
val var_string2 = """hello\thello\na\t\\"""
println (var_string2)
}
}
要点:
1、 Any 是所有类的父类,包括值类型 AnyVal,和引用类型 AnyRef
2、 AnyVal 是所有值类型的父类,包括 Int,Double,Boolean,Unit 等等 3、 AnyRef 是所有引用类型的父类,包括 Null
4、 Null 是所有引用类型的子类
5、 Nothing 是所有类的子类
6、 Unit 类型只有一个实例,是(),相当于 java 中的 void,没有任何的实质意义
7、 Null 也只有一个实例,是 null,相当于 java 中的 null,能赋值给任何引用类型变量,不 能赋值给值类型变量
1.3.2、Scala 基本类型操作
算术操作:+ - * / %
关系运算:> >= < <= == !=
逻辑运算:&& || !
位运算: & | ^ >> << >>>
对象比较:1==1 1==1.0 "huangbo" == "huangbo"
2.1 Scala关键字
2.2 Scala定义函数
函数的意义:表示接受两个 Int 类型的变量,然后做累加。 经过 scala 的自动类型推断得知,最后返回的结果数据的类型也是 Int。 Function2 中 2 表示这个函数接收的参数个数是 2 个。
2.3 Scala定义方法
方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返 回类型
注意:函数体应该改成叫方法体!!!如果不写等号,代表没有返回值
2.4方法和函数的区别
1、函数可以作为参数传递给方法,也就是说函数可以作为方法的参数 在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作
案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
2、函数可以作为方法的参数,但是也可以作为函数的参数,例如:
3、方法也可以作为方法的参数。在需要传入函数作为参数的位置上传入一个方法的话,那 么这个方法会被自动的转换为函数作为参数,也可以通过“_”把方法转换为参数
今天先复习这么多,最近一直在做敏捷开发,说白了就是加班加班加班,都没有什么时间学习总结,最近一直在写spark,所以先来复习一下scala,方便之后看spark的原码,最近一直用java写spark还是感觉没有scala好用,还是要多学习scala啊!
最后在这里说一句 武汉加油哦!! 我会回到武汉的!!