学习编程语言往往是我们开启学习之路的第一大步。大数据领域的很多框架都是基于Java语言开发的,而且各种框架也都提供了Java API来提供使用和操作接口,所以Java语言的学习逃不掉。除此之外Scala在必要时也可以学一下,在大数据开发领域里用得还是挺多的。Scala语言的表达能力很强,代码信噪比很高,而且很多大数据框架也都提供了Scala语言的开发接口,况且Scala也可以运行于Java平台(JVM),并且兼容Java程序,所以也可以和大数据相关系统进行很好的集成。
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。
特点
Scala需要依赖Java,访问链接: Scala和jdk对应关系
Windows中下载安装配置环境变量:
Linux中类似,可以使用包管理器,但如果依赖版本不严格一致的话,需要官网下载对应版本安装即可。
IDEA 环境配置
使用IntelliJ IDEA:
package VeryStarted
package VeryStarted
object HelloWorld {
def main(args: Array[String]): Unit= {
println("Hello,world!")
}
}
语法含义:
object SingletonObject { body }
def MethodName(ArgName: ArgType): RetType = { body }
object关键字创建的伴生对象,可以理解为替代Java的static关键字的方式,将静态方法用单例对象的实例方法做了替代,做到了更纯粹的面向对象。
再用一个等价的类定义来认识和区别一下Scala和Java:
java
public class Student {
private String name;
private Integer age;
private static String school = "XDU";
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public void printInfo() {
System.out.println(this.name + " " + this.age + " " + Student.school);
}
// psvm
public static void main(String[] args) {
Student tch = new Student("tch", 20);
tch.printInfo();
}
}
Scala
package VeryStarted
class Student(name: String, age: Int) {
def printInfo(): Unit = {
println(name + " " + age + " " + Student.school)
}
}
// 引入伴生对象,名称一致,同一个文件
object Student {
val school: String = "XDU"
def main(args: Array[String]): Unit = {
val tch = new Student("tch", 20)
tch.printInfo()
}
}
注释:
var name [:VariableType] = value // variable
val name [:ConstantType] = value // constant
因为Scala的函数式编程要素,所以一个指导意见就是能用常量就不要用变量。
整数赋初值超出表示范围报错。
自动类型推断,整数字面值默认类型Int,长整型字面值必须加L后缀表示。
直接向下转换会失败,需要使用强制类型转换,(a + 10).toByte。
。