scala 入门(1)
大数据“火”的有段日子了,原来打算学习hadoop…… 后知道spark要比hadoop更牛, 故而转学spark。其原码为scala所写,为了更好的研究spark,故又开始学习scala.
将自己所学记录在此,不为点赞, 只为加深记忆,加深理解…不是都说写一遍等于读十遍嘛……
1、基本类型:
Byte 8位有符号补码整数
Short 16位有符号补码整数
Int 32位有符号补码整数
Long 64位有符号补码整数
Char 16位无符号Unicode字符
String char序列
Float 32位IEEE754单精度浮点数
Double 64位IEEE754双精度浮点数
Boolean true or false
如果熟悉Java,你后发现java的基本类型在scala中有同样的意思, 不同的是scala是首字母大写,这是由于scala 高度重用java类型的缘故(隐式转换)
2、变量定义:
scala 有两种变量:val 及 var。
val 类似与java中的final ,一旦初始化,就不能再被赋值。
var 则类似java中的非final变量,在它的生命周期中可以被多次赋值。
在java中,各种类型是固定的, int型是int型, String 是 String, 是什么类型就是什么类型,除非显示转换。
而Scala 中在定义变量时可以之用val 及 var ,因为其有类型推断的能力。
如: val msg = "123", 则Scala解释器自动推断类型为String;
val msg = 123 则为Int;
另外Scala中写明类型标注,这样可以确保编译器使用自己想要的类型, 其与java中不同之处在于 Scala的变量类型写在其名称之后,中间用冒号分隔,如:
val msg :java.lang.String = "123";
也可以写成
val msg : String = "123";
3、函数定义:
Scala中函数定义用 def 关键字,然后是函数名称。如:
def max(x : Int, y : Int) : Int = {
if(x>y)
x;
else
y;
}
上列中:max为函数名, x,y为参数,类型为Int型, 最后一个Int标识函数返回值类型,{}中部分为方法体;
Scala与java一个 重要的区别是返回值, 在java中必须显式的用return 关键字,但在Scala中可以用显示的用return标识返回类型, 也可省略,这时最后执行的一行就为返回值。 Scala中返回值类型可以不加编译器可以自动推断它,但递归函数必须加。
java中函数没有返回值时用void ,scala中则为Unit。
4、数组(Array)
scala中数组定义如下:
val greetStrings = new Array[String](5);
此句表达式定义了一个 名为greetStrings,类型为String,初始长度为5的数组;
与java不同的是在使用数组中元素时 scale用圆括号,java用方括号。如:
Java: greetString[0] = “hello”;
Scala: greetString(0) = “hello”;
5、控制结构:
1) if表达式
scala 与其它语言的不同之外在于 scala的if 是可以有返回值的。如:
val res =
if(!args.isEmpty) args(0);
else "default";
其它用法同其它语言一样
2) while表达式:
与其它语言基本相同。
3) for 表达式:
用法如下
for(arg <- args) {
Println(arg);
}
4) foreach
args.foreach(arg => println(arg)); 由于此时没写明arg的类型, 由解释器自动推断
亦可明确元素类型,如:
args.foreach((arg : String) => println(arg));
今天就先进行到这里了, 明天继续…
scala 入门(1)的更多相关文章
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- Scala入门 【1】
Scala入门 [1] 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 基础 val定义的为常量,var为变量 val name:Type = ***,变量名后加冒号 ...
- Scala入门(1)Linux下Scala(2.12.1)安装
Scala入门(1)Linux下Scala(2.12.1)安装 一.文件准备 1.1 文件名称 scala-2.12.1.tgz 1.2 下载地址 http://www.scala-lang.org/ ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- Scala 入门详解
Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...
- idea创建Scala入门HelloWorld
Scala开发环境的搭建 首先到Scala官网下载Scala网址为 https://www.scala-lang.org/download/ 找到下图所示位置:选择相对应的版本的Scala进行下载,这 ...
- IntelliJ中的Scala入门
IntelliJ IDE中的Scala入门 创建项目 打开IntelliJ并单击File => New => Project 在左侧面板中,选择Scala.在右侧面板中,选择IDEA. 将 ...
- Scala入门到精通
原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- Scala入门之函数
/** * 函数可以被简单的被认为是包裹了一条或者几条语句的代码体,该代码体接收若干参数,经过代码体处理后返回结果,形如数学中的f(x) = x + 1 * 在Scala中函数式一等公民,可以向变量一 ...
随机推荐
- vim 中按键映射问题
按键映射关键字的组成开始让我摸不着头脑,查了资料,然后来做一个log 按键绑定命令:模式前缀(缺省为normal) + 递归前缀(缺省为空) + map 前缀表示生效范围,递归前缀表示是否递归查找命令 ...
- HDU_2049——部分错位排列,概率论
Problem Description 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样 ...
- 记一次pending请求问题查找过程
情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...
- Odoo “坑” 系列之 XML中的布尔类型
在Odoo中试图通过XML方式更新某条Record的值,却意外发现根本不能更新,经查,对于XML中Boolean类型的字段,更新的方式应该采用eval的方式.
- [原创作品] web项目构建(一)
今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...
- js解析json,js转换json成map,获取map的key,value
json串格式 { "10.10.11.1": { "target_1": "34.2", "target_3": &q ...
- SqlServer 笔记
问题一:这标红色的符号 取掉 一直没有见过标红色的符号,尝试把这些符号粘贴出来到 notepad 发现它是乱码,尝试将它粘贴到sql查询分析器里,发现它显示空白.对于这种数据,一直想着找到这个acsi ...
- Android 字体设置
Android 对中文字体支持很不好~~ 需要加入相应的字体库 (1)创建布局Layout //创建线性布局 LinearLayout linearLayout=newLinearLayout(thi ...
- C++11 : 外部模板(Extern Template)
在C++98/03语言标准中,对于源代码中出现的每一处模板实例化,编译器都需要去做实例化的工作:而在链接时,链接器还需要移除重复的实例化代码.显然,让编译器每次都去进行重复的实例化工作显然是不必要的, ...
- CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)
小学生放假了 总时限 26s 内存限制 256MB 出题人 zsyzzsoft 提交情况 16/150 初始分值 1500 锁定情况 背景 我们能见到的最可怕的事情,莫过于小学生放假了! 描述 小学生 ...