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中函数式一等公民,可以向变量一 ...
随机推荐
- POJ_2488——骑士遍历棋盘,字典序走法
Description Background The knight is getting bored of seeing the same black and white squares again ...
- BZOJ 3040 最短路 (堆优化dijkstra)
这题不是裸的最短路么?但是一看数据范围就傻了.点数10^6,边数10^7.这个spfa就别想了(本来spfa就是相当不靠谱的玩意),看来是要用堆优化dijkstra了.但是,平时写dijkstra时为 ...
- Mitsubish FX 3U PLC 串口 连接单元
前段时间遇到一个Mitsubish FX 3U PLC ,现将PLC连接单元分享一下,希望对其他人有所启示. unit PLC_MitsubishiFX; interface uses Windows ...
- SQL-MICK基础
/*Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据:2.where子句基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算: ...
- MsgBox-官方文档
http://s3.envato.com/files/293712/index.html
- psp个人软件过程需求文档
1. 业务需求 1.1 应用背景 开发软件项目进度计划总是那么不准确,延期经常出现,跟可恨的是甚至无法给出一个相对比较明确的延迟时间.很大 因素在于分配给开发人员的完成时间与开发人员的实际完成时间有 ...
- leetcode:Palindrome Number (判断数字是否回文串) 【面试算法题】
题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...
- Linux Resin 安装配置
Resin是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能优良,resin自身采用Java语言开发.Resin Pro版本支持缓存和负载均衡,收费最 ...
- [Angular 2] Interpolation: check object exists
In Angular2, sometime we use @Output to pass data to parent component, then parent may pass the data ...
- 命令行运行android模拟器
创建模拟器 android create avd --name avd_4.1 --target "android-16" --abi armeabi-v7a Android 4. ...