scala编程(五)——基本类型和操作
文本
文本是直接在代码里写常量值的一种方式以。在Scala中并不显式的使用Int或float,而是以文本的方式写成 val 变量。
如果整数文本结束于 L 或者 l,就是 Long 类型,否则就是 Int 类型。
如果浮点数文本以F或f结束,就是Float类型的,否则就是Double类型的。 可选的,Double浮点数文本也可以D或d结尾。
字符文本可以是在单引号之间的任何 Unicode 字符
def main(args: Array[String]): Unit = {
val l = 1l;
val f = 1.5f;
val d =1.5d;
}
Scala 为原始字串:raw String 引入了一种特殊的语法。以同一行里的三个引号(""")开始和结束一条原始字串。内部的原始字串可以包含无论何种任意字符,包括新行,引号和特殊字符,当然同一行的三个引号除外。
val s =
"""hello,my name
|is "alice",nice to meet you""".stripMargin;
println(s)
运行结果如下:
hello,my name
is "alice",nice to meet you
操作符和方法
Scala 为它的基本类型提供了丰富的操作符集。如前几章里描述的,这些操作符实际只是 作用在普通方法调用上华丽的语法。例如,1 + 2 与(1).+(2)其实是一回事。换句话说, 就是 Int 类包含了叫做+的方法,它带一个 Int 参数并返回一个 Int 结果。这个+方法在两 个 Int 相加时被调用。
任何方法都可以是操作符。Scala里的操作符不是特殊的语言语法:任何方法都可以是操作符。使用方法的方式使它成为操作符。如果写成 s.indexOf('o'),indexOf 就不是操作符。不过如果写成,s indexOf 'o',那么 indexOf 就是操作符了,因为你以操作符标注方式使用它。
Scala 里,你可以舍弃方法调用 的空括号。例外就是如果方法带有副作用就加上括号,如 println(),不过如果方法没有 副作用就可以去掉括号,如 String 上调用的 toLowerCase。
println(s.toLowerCase)
对象相等性
可以利用==操作符,比较不同类型的两个对象,甚至可以比较 null,或任何可能是 null 的东西。不会有任何异常被抛出。
def main(args: Array[String]): Unit = {
val list = List("abc","def");
val array = List("abc","def");
println(list == array)
println(list == null)
}
==已经被仔细地加工过,因此在许多情况下你都可以得到你想要的相等性的比较。这只是用了一个非常简单的规则:首先检查左侧是否为null,如果不是,调用equals 方法。由于equals是一个方法,因此比较的精度取决于左手边的参数。又由于已经有一个 自动的null检查,因此你不需要手动再检查一次了。这种类型的比较对于不同的对象也会产生 true,只要他们的内容是相同的并且它们的 equals 方法是基于内容编写的。
Scala 的==与 Java 的有何差别? Java 里的既可以比较原始类型也可以比较参考类型。对于原始类型,Java 的==比较 值的相等性,如 Scala。然而对于参考类型,Java 的==比较了参考相等性:reference equality,也就是说这两个变量是否都指向于 JVM 堆里的同一个对象。Scala 也提供了这 种机制,名字是 eq。不过,eq 和它的反义词,ne,仅仅应用于可以直接映射到 Java 的对 象。
富包装器
你可以在 Scala 基本类型上调用的方法远多于前几段里面讲到过的。表格 5.4 里罗列了几 个例子。这些方法的使用要通过隐式转换:implicit conversion,一种将在第二十一章描 述其细节的技术。现在所有要知道的就是本章介绍过的每个基本类型,都有一个“富包装 器”可以提供许多额外的方法。因此,想要看到基本类型的所有可用方法,你还应该查看 一下每个基本类型的富包装器的 API 文档。这些类可参见表格 :
示例代码如下:
示例代码如下:

示例代码如下:
def main(args: Array[String]): Unit = {
println(0 max 5 );
println(0.min(5))
print(-2.7 abs )
println(-2.7 round)
println(1.5 isInfinity)
println((1.0 / 0) isInfinity)
println(4 to 6)
println("Bob" .capitalize)
println("robert" drop 2)
}
运行结果如下:
5
0
2.7-3
false
true
Range(4, 5, 6)
Bob
bert
scala编程(五)——基本类型和操作的更多相关文章
- Scala编程--基本类型和操作
如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...
- Scala 编程(三)基本类型和操作
一些基本类型 值类型 范围 Byte 8位有符号补码整数(-27-27-1) Short 16位有符号补码整数(-215-215-1) Int 32位有符号补码整数(-231-231-1) Long ...
- scala 基本类型和操作
Scala基本类型 Scala中的基本数据类型如下图: (来源:Programming in scala) 从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是 ...
- Scala学习笔记(八):基本类型和操作
基本类型: 整数类型=>数类型 字面量:字面量就是直接写在代码里的常量值 字面量是指由字母.数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,如:int a=123这里的 ...
- redis基本类型和操作
基本类型:string hash list set sorted set 添加String 类型(最基本的key,value形式) set str1 s1 获取value get str1 添加has ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- C/C++、C#、JAVA(二):基本类型和转换操作
基本类型和转换操作 数据类型 C语言中的基本类型如下. 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255 si ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
- Scala编程快速入门系列(一)
目 录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...
随机推荐
- 实验4&5
[实验任务四]: 在上网时,我们经常会看到以下这种对话框,要用户输入一个验证码. 1.程序设计思想 先利用Math.random()得到一个整数,然后将其类型转换为字符类型,连接起来生成六位验证字符串 ...
- Tensorflow学习教程------过拟合
Tensorflow学习教程------过拟合 回归:过拟合情况 / 分类过拟合 防止过拟合的方法有三种: 1 增加数据集 2 添加正则项 3 Dropout,意思就是训练的时候隐层神经元每次随机 ...
- hook截获自定义消息
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- JavaScript—封装animte动画函数
封装Animte 动画函数 虽然可能以后的开发中可能根本不需要自己写,Jquery 给我们封装好了,或者用CSS3的一些属性达到这样的效果可能更简单. 我比较喜欢底层的算法实现,万变不离其中,这个逻辑 ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- Oracle与MySQL的区别对比
本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...
- 2.redis-help使用,基本命令
redis 帮助 > help redis-cli Type: "help @<group>" to get a list of commands in < ...
- python学习笔记--数据类型和变量总结
1.数据类型 字符串 数字 列表 元祖 字典 2.可变不可变划分 可变:列表,字典 不可变:字符串,数字,元祖 举例:字符串,通过id查看字符串变量在内存中的地址.两次存的值不一样,这就说明了内存重新 ...
- UML-迭代1-基础
1.原则 1).拆分成多个按时间定量.风险驱动的迭代(细化1.细化2.细化3.细化4) 2).在多个迭代中,对同一用例增量开发. 2.最佳实践 设计人员:对架构的核心和风险做适当设计.实现和测试 研发 ...
- 如何正确理解SQL关联子查询
一.基本逻辑 对于外部查询返回的每一行数据,内部查询都要执行一次.在关联子查询中是信息流是双向的.外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录.然后,外部查询根据 ...