Programming In Scala笔记-第五章、Scala中的变量类型和操作
2016-09-13 22:35
344 查看
这一章的一些基础性的东西,主要包括Scala中的基本变量类型,以及相关的一些操作符。
运算结果如下:
![](http://img.blog.csdn.net/20160913223018696)
对于String类型的变量,可以直接调用其
![](http://img.blog.csdn.net/20160913223045306)
同样的String也提供了另外一个重载的
![](http://img.blog.csdn.net/20160913223123009)
从这里可以看出,不管是
1、字面量之间
首先看一下对字面量使用
![](http://img.blog.csdn.net/20160913223158775)
2、对象之间
再看一下两个对象之间直接使用
![](http://img.blog.csdn.net/20160913223223619)
3、不同类型对象之间
![](http://img.blog.csdn.net/20160913223245858)
从上面这些操作可以看到,除了字面量的比较之外,Scala中
![](http://img.blog.csdn.net/20160913223308984)
Scala中调用
四、富封装
Scala通过富封装为基本类型变量提供了更多的操作符,比如说对Int类型,有一个对应的富封装类为RichInt类型。基本变量的更多操作,以及基本变量的富封装类对应关系分别列举在下面的两个表格中。
富封装提供的操作表:
富封装类对应关系表:
一、简单类型
下表中列出Scala语言中的基本类型,以及其字节长度,其中Byte, Short, Int, Long以及Char都属于整型,整型再加上Float和Doble统称为数字类型。类型 | 描述 |
---|---|
Byte | 8位有符号补码整型(-2^7~2^7 - 1) |
Short | 16位有符号补码整型(-2^15~2^15 - 1) |
Int | 32位有符号补码 整型(-2^31~2^31 - 1) |
Long | 64位有符号补码 整型(-2^63~2^63 - 1) |
Char | 16位无符号Unicode字符(0~2^16 - 1) |
String | 由一系列Char组成 |
Floar | 32位双精度浮点型 |
Double | 64位双精度浮点型 |
Boolean | true或false |
二、操作和方法
Scala中的+, -, *, /实质上都是方法的调用,前面提到过
1 + 2实际上是
(1).+(2)的简单形式,在这里Int型变量有一个名称为
+的方法,这个方法接收一个Int型参数,返回值也为Int类型。Int型变量的
+方法也可以接收一个Long型变量,返回结果为Long型。这里可以理解成有多个重载的
+方法。
val sum = 1 + 2 val sumMore = (1).+(2) val longSum = 1 + 2L
运算结果如下:
对于String类型的变量,可以直接调用其
indexOf方法返回指定字符在字符串中出现第一次的下标位置。
同样的String也提供了另外一个重载的
indexOf方法,这个方法可以接收两个参数,返回从指定位开始第一个指定字符的下标
s indexOf('o', 5)
从这里可以看出,不管是
+操作,还是
indexOf操作,在Scala中本质是相同的,同样都是对某个对象的方法调用。
三、对象的equal判断
对Java熟悉的同学应该比较清楚==和
equals的区别。在Scala中判断两个对象是否相等可以直接使用
==方法。
1、字面量之间
首先看一下对字面量使用
==方法的结果,和Java中是一样的
2、对象之间
再看一下两个对象之间直接使用
==方法的结果,
3、不同类型对象之间
==方法也可用于不同类型的对象之间,并且可以与
null进行比较
从上面这些操作可以看到,除了字面量的比较之外,Scala中
==和Java中是不相同的。Java中,引用类型的
==判断仅仅比较两个引用值是否指向内存堆中的同一个对象。而在Scala中对两个引用的
==比较,和Java中的
equals方法效果是相同的。同时,在Scala中提供了一个
eq方法用于判断两个引用值是否指向同一个对象。
ne与
eq的功能相反。
Scala中调用
==方法,程序执行时,首先判断左边的变量是否为null,如果不为null则调用其
equals方法,判断右边变量是否相等。
四、富封装
Scala通过富封装为基本类型变量提供了更多的操作符,比如说对Int类型,有一个对应的富封装类为RichInt类型。基本变量的更多操作,以及基本变量的富封装类对应关系分别列举在下面的两个表格中。
富封装提供的操作表:
操作 | 结果 |
---|---|
0 max 5 | 5 |
0 min 5 | 0 |
-2.7 abs | 2.7 |
-2.7 round | -3L |
1.5 isInfinity | false |
(1.0 / 0) isInfinity | true |
4 to 6 | 4, 5, 6 |
“bob” capitalize | “Bob” |
“robert” drop 2 | “bert” |
基本类型 | 富封装类型 |
---|---|
Byte | scala.runtime.RichByte |
Short | scala.runtime.RichShort |
Int | scala.runtime.RichInt |
Char | scala.runtime.RichChar |
Float | scala.runtime.RichFloat |
Double | scala.runtime.RichDouble |
Boolean | scala.runtime.RichBoolean |
String | scala.collection.immutable.StringOps |
相关文章推荐
- Programming In Scala笔记-第五章、Scala中的变量类型和操作
- 【Java学习笔记】基本类型变量的操作
- Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
- Programming In Scala笔记-第十七章、Scala中的集合类型
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析之Scala学习笔记-34
- Programming In Scala笔记-第十七章、Scala中的集合类型
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- Scala学习笔记(八):基本类型和操作
- 第43讲:Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析学习笔记
- Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
- 笔记:ABAP操作字符串值的对应变量
- PL/SQL学习笔记-常量变量及数据类型初步
- 小苏的Shell编程笔记之二--Shell变量及其相关操作
- AS3 学习笔记 一 变量、类型
- [RedHat笔记]第三课:变量的种类及用法,alias命令,环境变量的分类和修改,输入输出重定向,for循环,文本处理类命令,grep命令,短路操作(&& ||)
- objective-c学习笔记第七章《objective-c 数据类型和变量与java中的区别》
- [C++ primer 学习笔记][02]变量和基本类型
- Delphi 2010学习笔记(5)---数据类型(变量)---2011-01-18
- C++学习笔记一 变量与基本类型