用Java语言开发许久了,一直接触指令式的语言开发,同时也做的多了,也逐渐感觉到了静态语言的一些弊病。Scala的出现,可以使Java程序员平滑的过度,Scala语言也是运行在JVM上的,可以与Java无缝交互;Scala是面向对象的,可以通过提升接口的抽象级别来帮助管理复杂性。Scala是简洁的,Scala程序员曾报告说,与Java比起来,它的代码行数可以减少到Java的1/10,哈哈,是不是有些夸张呢?个人觉得,如果能减少三分之一,就非常成功了;Scala是静态的,它以Java的内嵌类型系统为基础,允许使用泛型参数化类型,用交集组合型类型和抽象类型隐藏实现细节,从而能够设计出安全而又能灵活使用的接口。
我们先来安装Scala的开发包,我的版本是scala-2.9.0.1.zip,安装方式解压就可以,环境变量和Jdk的没什么区别,指向到bin目录下就可以了,打开dos窗口,运行scala,出现下面结结果就表示安装成功了
好了,让我们开始Scala之旅吧。
在Scala中,分号是可选的,你可以写或者不写;定义类和构造函数,Java中一般这么写
- public class MyTest {
- private int id;
- private int index;
- public MyTest(int id, int index) {
- this.id = id;
- this.index = index;
- }
- }
而在Scala中,可以这么写
- class MyTest(id: Int, index: Int)
除了这些特性,尤其值得一提的是Scala是静态类型的语言,它支持指令式的编程,但更推荐的使用函数式的编程。比如下面的代码
- object HelloWorld {
- def main(args: Array[String]): Unit = {
- var i = 0
- while(i < args.length) {
- println(args(i))
- i += 1
- }
- }
- }
我可以使用scalac HelloWorld.scala使他生成class字节码,也可以直接在JVM上执行,
scala HelloWorld.scala Hello World
打印结果将是 Hello World
大家不觉得这样有一丁点儿复杂吗,来看看Scala的函数式的编程是什么样的
- object HelloWorld {
- def main(args: Array[String]): Unit = {
- args.foreach(arg => print(arg + " "))
- }
- }
arg就是你临时定义的变量,Scala默认为其开辟了临时的String变量arg。
体验了最初的简单函数式风格,我们再看下Scala中如何使用数组,在Java中,使用一个最简单数组是这样的
- public class ArrayTest {
- public static void main(String[] args) {
- String[] strs = new String[]{"Hello", "World", "!"};
- for(String str : strs) {
- System.out.println(str);
- }
- }
- }
在Scala中,同样是通过new来实例化对象,实例化过程中,可以用值和类型使对象参数化,使用值参数化实例可以通过把值传递给构造器的圆括号来实现,比如,Scala中数组是这么实现的,值得一提的是,在Scala中,数组是可变数据结构,这是和Java中有区别的地方
- object ArrayTest {
- def main(args: Array[String]): Unit = {
- var greetString = new Array[String](3)
- greetString(0) = "Hello"
- greetString(1) = "World"
- greetString(2) = "!"
- for(i <- 0 to 2) {
- println(greetString(i))
- }
- }
- }
i <- 这个表达式是表示左边的涵盖在右边范围之内。
下面我们来看看List,在Java中,List是可变的结构序列,而在Scala中,List是不可变的,在Scala中,List是不可变的数据结构,这么设计是为了函数式编程而设计的,奇特的是,Scala中并不需要通过new来创建List对象,比如下面一个例子,我创建了两个集合,并且把它们循环打印出来。
- def main(args: Array[String]): Unit = {
- var list1 = List("aaa", "bbb", "ccc")
- var list2 = List("ddd")
- var list3 = list1 ::: list2
- list3.foreach(list => print(list + " "))
- }
打出的结果就是 aaa bbb ccc ddd
我们再来看看Set和Map,Scala致力于充分利用函数式和指令式两方面的好处,所以它的集合库区分为可变型和不可变型,都承接与Set,他们分别在Scala的不同包里。在Java中,我们称为“实现”了接口,而在Scala中,我们称为“扩展”或“混入”,下面我分别用Scala中的HashSet和HashMap的不可变数据类型,来做例子
- object SetTest {
- def main(args: Array[String]): Unit = {
- var set = HashSet("b", 3, "c")
- set += "very"
- set.foreach(value => print(value + " "))
- }
- }
这是Set的,下面是关于Map的
- object MapTest {
- def main(args: Array[String]): Unit = {
- var map = HashMap(1 -> "a", 2 -> "b", 3 -> "c")
- map += (4 -> "d")
- map.foreach(value => print(value + " "))
- }
- }
Scala的程序,只要后缀名命名为.scala就可以了。同时Eclipse也内置了对Scala的支持,安装插件的网址是http://download.scala-ide.org/nightly-update-wip-experiment-2.9.0.final
大家可以自行安装,安装完后就可以在Eclipse中运行了,如下图
转自:http://fengfeng925.iteye.com/blog/1074292
相关推荐
《Scala语言核心编程》是尚硅谷教育机构韩顺平老师主讲的一门课程,主要针对Scala这门多范式编程语言进行深入讲解。Scala是一种静态类型的编程语言,它融合了面向对象和函数式编程的概念,设计目标是提供一种简洁、...
《Scala语言规范》是理解这种语言的基础,特别是对于那些想要深入学习Apache Spark或其他基于Scala的大数据处理框架的开发者来说,这本书具有极高的价值。 1. **类型系统**:Scala的类型系统是静态的,这意味着在...
在尚硅谷出版的《大数据之Scala语言核心编程》中,首先介绍了学习Scala语言的原因和Scala语言诞生的小故事。Scala诞生是为了提供一种更加简洁高效的编程方式,能够在同一套系统中处理结构化和非结构化数据。该书中还...
Scala语言规范-Scala 是一门类 Java 的编程语言,它结合了面向对象编程和函数式编程。 Scala 是纯面向对象的,每个值都是一个对象,对象的类型和行为由类定义,不同的类可以通过混入(mixin)的方式组合在一起。 Scala...
本教程旨在帮助初学者深入理解Scala语言,并掌握其核心概念和最佳实践。 首先,Scala的基础语法与Java有许多相似之处,因为它们都是基于JVM的语言。然而,Scala引入了许多创新特性,如模式匹配、高阶函数、匿名函数...
在“Scala语言规范.pdf”中,你将找到关于Scala语言的所有核心概念和规则的详细解释。以下是一些关键知识点的概述: 1. **类型系统**:Scala具有静态类型,但类型推断使得编写代码时可以减少显式的类型声明。它还...
Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,由Martin Odersky在2003年设计...通过学习这些内容,开发者可以掌握Scala语言,并能将其应用于各种复杂项目中,实现高效、可靠的软件解决方案。
Spark的MLlib库提供了对K-Meas算法的支持,它以Scala语言为基础,使得开发者能够轻松地构建和执行K-Means聚类任务。在Scala中,我们首先需要导入Spark的相关库,包括`SparkContext`,`SparkConf`以及`MLlib`中的`...
### Scala语言入门知识点详解 #### 一、Scala简介 Scala是一种多范式的编程语言,它融合了面向对象编程和函数式编程的特点。Scala语言的设计旨在提高代码的可读性和表达能力,同时保持高性能。Scala运行在Java平台...
Scala是一种在Java虚拟机(JVM)上运行的高级编程语言,它巧妙地融合了面向对象和函数式编程的概念。Scala的设计目标是提高代码的可读性、安全性和可伸缩性,同时允许程序员利用多核处理器的优势进行并行处理。 在...
完整的ID3决策树算法,采用了scala语言来实现,代码完整。
【大数据课程-Scala编程基础-1.Scala语言初识】是针对初学者设计的一门课程,旨在教授如何入门Scala编程,特别适合已有Java基础的学员。Scala是一种在2001年由洛桑联邦理工学院(EPFL)的编程方法实验室研发的语言,...
Scala是一种多范式的编程语言,它融合了面向对象和函数式编程的概念。在 Scala 语言规范中,我们首先关注的是其基本的语法元素和数据类型。 1. **词法** - **标识符**:Scala 的标识符可以由字母、数字、下划线 `_...
### Scala语言规范解析 #### 一、Scala语言概述 **Scala**是一种强大的多范式编程语言,它将面向对象编程和函数式编程的最佳特性融合在一起。作为一种类Java的语言,Scala旨在提供比Java更简洁、更灵活且功能更...
Scala是一种强类型、静态类型的编程语言,由Martin Odersky在2003年创建,它的名字来源于...通过阅读尚硅谷-韩顺平_Scala语言核心编程.pdf,你可以深入理解Scala语言的核心概念,并掌握如何在实际项目中运用这些知识。
Scala语言规范版本2.7为编程者提供了语言的语法、类型系统、声明与定义、类和对象、表达式、模式匹配、顶级定义等方面的详细说明。在标识符、命名和域方面,Scala具有自己的规则。比如标识符可以包含字母、数字、...
Scala语言规范是Scala编程语言的设计蓝图,它规定了Scala语言的结构、语法、类型系统等关键特性。Scala是一种多范式的编程语言,将面向对象编程和函数式编程的概念融合在一起,广泛应用于大数据处理框架Apache Spark...