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来声明变 ...
随机推荐
- 【Java面试题】1 Java中使用switch-case的用法及注意事项超全总结
今天在用到switch的时候,这种设计到最基本的内容,可能忘记它的一些基本语法,出现了一些错误,所以即兴从各种资料查询总结了下面的内容,希望可以帮助那些正在困扰switch错误和各种细节问题的朋友! ...
- Golang - OSX配置VIM下的Golang开发环境 (MacOS为例)
测试环境 MacOS 10.12.6 首先安装VIM brew install vim 我已经安装了 Vim 8.0版本 然后安装 Vundle ,这是一个vim包管理器 git clone http ...
- php判断来访者是否是搜索引擎的蜘蛛
我们可以通过HTTP_USER_AGENT来判断是否是蜘蛛,搜索引擎的蜘蛛都有自己的独特标志,下面列取了一部分. function is_crawler() { $userAgent = strtol ...
- UITextField 全属性
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, ...
- java中Date的使用情况
在开发中常使用情况. 1.将String转为date 例如"201604131630" //设置日期格式 public SimpleDateFormat sdf = new Si ...
- 查看系统进程:ps
ps命令用于查看系统进程,常见用法如下: [root@localhost ~]$ ps aux # 查看所有的进程 [root@localhost ~]$ ps aux | grep nginx # ...
- linux系统socket通信编程2
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- 佛祖保佑永无bug
世界最难懂C语言代码竞赛: // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\_ ...
- Solr可视化简单的操作
Solr可视化简单的操作 启动solr服务器;在浏览器输入Tomcat启动: http://192.168.191.142:8080/solr/#/ Ø 添加core,首先在存放home的文件下创建 ...
- 使用boch仿真器在x86 PC平台上搭建Linux0.11系统环境(windows下)
当你有机会来到这页面时 十有八九是遇到这样一个问题 执行配置文件bochsrc_fd.bxrc时出现找不到 ips的情况! 版本原因吧 将boch版本换成2.4的问题就迎刃而解了~ 简单 ...