Programming In Scala笔记-第五章、Scala中的变量类型和操作
来源:互联网 发布:淘师湾信息技术网络平 编辑:程序博客网 时间:2024/06/10 16:08
这一章的一些基础性的东西,主要包括Scala中的基本变量类型,以及相关的一些操作符。
一、简单类型
下表中列出Scala语言中的基本类型,以及其字节长度,其中Byte, Short, Int, Long以及Char都属于整型,整型再加上Float和Doble统称为数字类型。
二、操作和方法
Scala中的+, -, *, /
实质上都是方法的调用,前面提到过1 + 2
实际上是(1).+(2)
的简单形式,在这里Int型变量有一个名称为+
的方法,这个方法接收一个Int型参数,返回值也为Int类型。Int型变量的+
方法也可以接收一个Long型变量,返回结果为Long型。这里可以理解成有多个重载的+
方法。
val sum = 1 + 2val 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类型。基本变量的更多操作,以及基本变量的富封装类对应关系分别列举在下面的两个表格中。
富封装提供的操作表:
富封装类对应关系表:
- Programming In Scala笔记-第五章、Scala中的变量类型和操作
- Programming In Scala笔记-第十七章、Scala中的集合类型
- Programming In Scala笔记-第七章、Scala中的控制结构
- Programming In Scala笔记-第十六章、Scala中的List
- Actors in Scala(Scala中的Actor)(预打印版) 第五章 Event-Based Programming (A)
- Actors in Scala(Scala中的Actor)(预打印版) 第五章 Event-Based Programming (B)
- Scala学习整理[第十一-十三章 类型/特质和其应用/包]<Programming In Scala>
- Programming In Scala笔记-第四章、类和对象
- Programming Scala第5章 demo01 scala中的类型
- Programming In Scala笔记-第十一章、Scala中的类继承关系
- Programming In Scala笔记-第二、三章
- Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
- Programming In Scala笔记-第六章、函数式对象
- Programming In Scala笔记-第八章、函数与闭包
- Programming In Scala笔记-第九章、控制抽象
- Programming In Scala笔记-第二十八章、XML相关
- Programming In Scala笔记-第十五章、Case Classes和模式匹配
- Scala学习整理[第十五章 样本类和模式匹配]<Programming In Scala>
- [详解]为什么选择Spring Boot作为微服务的入门级微框架(PPT)
- Android学习记录-《第一行代码》阅读笔记(2)
- 写给PHP初学者:开发环境搭建之完全篇(PHP+MySQL+Apache+NetBeans)
- 欢迎使用CSDN-markdown编辑器
- 2017秋招编程题小记
- Programming In Scala笔记-第五章、Scala中的变量类型和操作
- mysql学习笔记(一)
- Maven使用
- override->重写(=覆盖)、overload->重载
- std::function
- LInux下环境变量配置错误导致不能登录的及命令失效解决方案
- Eclipse和MyEclipse的区别
- 状态模式
- 毕业季,拿到offer的路漫漫其修远兮----华阳