系统学习scala--基础
scala基础
安装scala(不推荐使用最新版本,2.11.x够用了)
这里我选择2.11.12版本,在下载页面往下拉,选择scala-2.11.12.msi(windows用户),msi安装比较简单,一直点点就行。如果下载速度慢,建议用迅雷。
安装完后,配置环境变量,如图:
- 在命令行中输入scala -version验证是否安装成功。
声明值和变量
安装成功后在命令行中输入scala并回车就能打开scala的解释器。每次输入命令,解释器都会显示出结果。
正如你所看到的,解释器会给结果自动命名和显示结果类型,并且在后续操作中可以继续使用。而解释器这些操作过程也被称为“读取-求值-打印” 循环(read-eval-print-loop)即REPL,后面为了方便表示,我们就称解释器为REPL。
你还能自定义自己的名称:
scala> val ans = 8*5+2
ans:Int = 42
这里已val定义的值实际上是个常量,相当于java中的final,值不可改变。定义变量使用var。
一般情况下,推荐使用val,除非你真的需要改变它的内容。在定义的时候你还可以指定变量的类型,如:
var ans:Int = 8*5+2
说明:在scala中,变量和函数的类型总是写在变量和函数的名称后面。
常用类型
scala有七种数值类型:Byte,Char,Short,Int,Long,Float,Double和Boolean类型。scala并没有明确区分基本类型和引用类型,就都像java中的包装类,可以直接调用方法。
1.toString() // "1"
99.99.toInt() // 99
99.toChar() // 'c'
// 在scala中','逗号可以省略,括号内没有参数可以不写括号
1 toString //不建议哈
1.toString //这个就可以
// 在scala中有隐式转换,比如:String对象被隐式转换成StringOps对象,追加上百种字符串操作。
"hello".intersect("world") //返回 "lo"
// 同样地,scala还提供了RichInt,RichDouble,RichChar等,为原来的类型增加所不具备的便捷方法。
1.to(3) // 1,2,3
1.until(3) // 1,2
通配符_
在scala中,_字符是通配符,类似java的*
val a:Int=_ // a=0
val b:Double=_ // b=0.0
val c:String=_ //c=null
val d = _ // 报错
伴生对象
在scala中,类都有一个伴生对象,其方法就跟java中的静态方法一样,类名+方法名就可以直接调用。
apply方法
在scala中,我们读取字符串中的一个字符是这样的s(i)。
var s = "hello"
println(s(4)) // 'o'
而在java中是这样的:
String s = "hello";
char c = s.charAt(4) // 'o'
其实scala之所以能这样获取字符串中的字符,是因为StringOps里面的apply方法。
s(i) 相当于 s.apply(i) //apply可以直接省略。
很多类的伴生对象都实现了apply方法,所以我们可以直接 对象名() 实现apply方法。
val array:Array[Int] = Array(1,2,3) // 使用apply直接创建数组。
最后
码字不易,喜欢的点个赞呗。
系统学习scala--基础的更多相关文章
- 【Python系统学习】基础篇
这次真的是最后一次了!第三次滚Python的基础.走了太多弯路.认真一点!菜鸟! 教程 转义字符 \ 可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\ ...
- Scala的安装,入门,学习,基础
1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...
- Scala系统学习(三):Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- Scala学习(一)--Scala基础学习
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...
- scala基础学习(一)
scala学习 scala与java的不同之处: 1.scala中任何一个操作符都是一个方法. s = 1+2; 可以写作:s=(1).+(2) 2.异常捕获采用模式匹配的方式. try { v ...
- 【Scala学习之一】 Scala基础语法
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- SCALA基础知识学习
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...
- 如何快速学习Scala
大数据学习过程中,会学习非常多的技术,但SCALA无疑是必不可少,那我们在大数据技术的学习过程中,如何快速的认识scala,并且学习它,感谢科多大数据公司的余老师提供的详细素材,本人整理成章,希望对你 ...
随机推荐
- JS面向对象编程之封装
来源:https://segmentfault.com/a/1190000015843072 我们所熟知的面向对象语言如 C++.Java 都有类的的概念,类是实例的类型模板,比如Student表示学 ...
- Linux安全实验缓冲区溢出
缓冲区溢出实验: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关 ...
- 监控CPU与GPU的工具
1.sensor:可以显示包括cpu在内的所有传感器的当前读数 使用sensors可以检测到cpu的温度,风扇的风速度,电压等. 2.Glances使用Python写的跨平台的curses的检测工具. ...
- 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!
基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest ②unittest demo 中 包含 web.api 自动化测试框架 ...
- 天大福利!世界第一科技出版公司 Springer 免费开放 400 多本电子书!
前几天,世界著名的科技期刊/图书出版公司施普林格(Springer)宣布:免费向公众开放 400 多本正版的电子书!! Springer 即施普林格出版社,于1842 年在德国柏林创立,20 世纪60 ...
- 标准库sys
sys模块的主要函数介绍,结合官方文档说明和实例.This module provides access to some variables used or maintained by the int ...
- Linux中的常用快捷键
tab 命令或路径补全键,linux里面最有用的快捷键,如果tab不到路径或命令,就代表没有这个路径或者命令,还有可能是权限不对 ctrl+c 终止当前任务命令或程序 ctrl+d 退出当前用户环境, ...
- TCP连接过程及报文解析
可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的. 那么具体的握手挥手的过程是怎么样的呢? 这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程. 实验方法: 写一段简单的代 ...
- MySQL - Show Global Status 整理
2019独角兽企业重金招聘Python工程师标准>>> MySQL - Show Global Status 整理 原文来源:MySQL 5.5 Reference Manual 部 ...
- Heartbeat+Haproxy实现负载均衡高可用
环境说明: 主机名 角色 IP地址 mylinux1.contoso.com heartbeat+haproxy eth0:192.168.100.121 eth1:172.16.100.121 my ...