Scala简介及基础语法
一、scala简介
官网:https://www.scala-lang.org/
Scala语言很强大,集成了面向对象和函数式编程的特点。
运行在JVM(jdk)。
大数据中为什么学习scala?
spark是scala语言编写。
python写spark 挺好的
java写spark 很糟糕(代码实在是太多了)
scala写spark 很完美 二、scala特点
1)优雅
框架设计中第一个要考虑的问题就是API是否优雅。
精简的封装。
代码精简(少)。
2)速度快
scala语言表达能力强。
一行代码=多行java代码,开发速度快。
3)完美融合hadoop生态
scala是静态编译,表达能力强并且代码量少。 三、安装Scala
1)下载scala-2.11.8.zip
2)解压到E:\temp\目录下
3)配置环境变量
SCALA_HOME=E:\temp\scala-2.11.8
PATH中加入%SCALA_HOME%\bin; 四、Scala基础语法
1)Scala程序的开始HelloWorld
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
} 2)Scala的数据类型
Scala与java一样,有8种数值类型:
Byte/Char/Short/Int/Long/Float/Double/Boolean/
和Unit类型(void)
注意:scala中无包装类型。
Unit:表示无值,用于不返回任何结果的方法的结果类型。 3)Scala定义变量
两个关键字:val var
val:定义变量值不可变
var:定义的变量值是可变的
scala编译器会自动的推断类型!
指定类型: val str:String = "Hello World"
注意:类型要保持一致
Unit = ():()相当于什么都没有用()表示。 4)条件表达式
if:判断
val y = if(x>0) 1 else 2 scala> val z = if(x>0) "error" else 1
z: Any = error Any:包含Anyval和AnyRef
Anyval:包含scala所有类型
AnyRef:Scala classes与Java Classes
Any相当于java的Object
val k = if(x<0) 0 else if(x>=1) 1 else -1
if和else if:多个条件的判断,符合条件看左侧,不符合条件看右侧 5)块表达式
在scala中{}包含一系列表达式,块中的最后一个表达式的值就是块的值
例如:
def main(args: Array[String]): Unit = {
//块表达式
val a = 1 val rs = {
if(a > 2){
1
}else if (a < 2){
-1
}else{
0
}
}
println(rs)
} 6)循环
yield:生成一个新的集合关键字
1.to(10).map(_*1000)
map:取出元素
_:代表元祖
循环的一些例子:
//1、循环得到1到10
scala> 1 to 10
res7: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) //2、循环换行输出1到10
scala> for(i <- res7) println(i)
1
2
3
4
5
6
7
8
9
10 //3、循环不换行输出1到10
scala> for (i <- res7) print(i)
12345678910 //4、定义变量接收循环得到的数字1到10
scala> val rs = 1 to 10
rs: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) //5、循环换行输出1到10
scala> for(x <- rs) println(x)
1
2
3
4
5
6
7
8
9
10 //6、定义一个数组
scala> val arr = Array(1,3,5)
arr: Array[Int] = Array(1, 3, 5) //7、循环换行输出数组的值
scala> for (i <- arr) println(i)
1
3
5 //8、按要求循环换行输出值
scala> for(i <- 1 to 10;j <- 1 to 5 if i != j) print((10*i+j) + " ")
12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 61 62 63 64 65 71 72 73 74 75 81 82 83 84 85 91 92 93 94 95 101 102 103 104 105 //9、使用yield生成一个新的集合
scala> for(i <- 1 to 10) yield i*10
res14: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) //10、使用to方法得到1到10
scala> 1.to(10)
res15: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) //11、使用to方法和map方法得到预期的结果
scala> 1.to(10).map(_*1000)
res16: scala.collection.immutable.IndexedSeq[Int] = Vector(1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000) //12、使用yield生成一个新的集合
scala> val a1 = for(i <- 1 to 10;if(i%2 == 0)) yield i
a1: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)
Scala简介及基础语法的更多相关文章
- Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...
- Markdown 简介及基础语法
一.Markdown 简介 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 二.Markdown 基础语法 1. Markdown ...
- [JavaWeb基础] 028.CSS简介和基础语法
css 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现 ...
- css系列教程--简介及基础语法和注意事项
css简介:css指的是层叠样式表,cascading style sheets.用来定义html中的dom节点如何展示在页面中的问题.解决了内容与表现形式的分离问题.常见的样式表有外部链接样式表和内 ...
- java 复习整理(一 java简介和基础语法)
现在公司用的是封装太多东西的平台开发,觉着之前学的东西很多都忘了,所以想好好总结回顾一下.之前总是想学很多编程语言像python.s6.node.react,但现在越来越体会到编程语言只是一个开发的工 ...
- Spark入门到精通--(第二节)Scala编程详解基础语法
Scala是什么? Scala是以实现scaleable language为初衷设计出来的一门语言.官方中,称它是object-oriented language和functional languag ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Scala入门系列(一):基础语法
Scala基础语法 Scala与JAVA的关系 Scala是基于Java虚拟机,也就是JVM的一门编程语言,所有Scala的代码都需要经过编译为字节码,然后交由Java虚拟机来运行. 所以Scala和 ...
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
随机推荐
- Mac OS Yosemite 文件批量重命名
首先,我们选中一个文件夹 右键,或者回车,给一个文件夹改名 同时选中三个文件夹 右键,选中批量更改 弹出批量更改,进行更改 改好后点回车,就能看到效果了 继续操作,完成所有文件 ...
- mysql分组取每组大的记录
SELECT a.* FROM chat_log a INNER JOIN (SELECT MAX(id) id,to_user FROM chat_log GROUP BY to_user)b ON ...
- Xcode/iOS: 如何判断代码运行在DEBUG还是RELEASE模式下?
原帖链接:http://stackoverflow.com/a/9063469 首先确定下项目的 Build Settings 是否已经设置过宏定义 DEBUG,如何看呢? 点击 Build Sett ...
- Vuforia AR实战教程
官网:https://developer.vuforia.com/ Vuforia AR实战教程 http://www.taikr.com/my/course/531. AQaVpF//////AAA ...
- MySQL Server 5.7.13
如何安装MySQL,MySQL两种安装方式_百度经验 http://jingyan.baidu.com/article/cd4c2979033a17756f6e6047.html "C:\P ...
- Oracle应用技术精华教程:管理还原段
管理还原段 在oracle 9i 之后提供了两种方法来管理还原数据 自动的还原数据管理:oracle 自动管理还原段的创建.分配和优化 手动的还原数据管理:oracle 手动管理还原段的创建.分配和优 ...
- 【ecshop】调用购物车商品数量
1 打开 includes/lib_insert.php 在最后位置添加如下代码: /** * 调用购物车商品数目 */ function insert_cart_mes_num() { $sql = ...
- Change Base
Given an integer m in base B (2 ≤ B ≤ 10) (m contains no more than 1000 digits), find the value of t ...
- web基础----->模板引擎Velocity的使用(一)
Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.今天我们就学习一下Velocity的用法. Velocity的第一个例子 项目的主体是 ...
- font-size对展示的影响
实例: <head> <style type="text/css"> span{display: inline-bloc ...