Scala实践2
一、Scala基本类型和操作
1.1 基本类型
Scala的基本类型与Java基本类型相同,都是byte、short、int、long、char、string、float、double、boolean。在Scala其只有string归于Java.lang包。其他的都是包Scala的成员。如,int的全名为Scala.Int。然而,由于包Scala和java.lang的所有成员都被每个Scala源文件自动应用,故可以在任何地方直接写作简化名。(如:Boolean、char等)
1.2 字面量
多数字面量的语法都与Java完全一致,唯一需要关注的两个差异分别是Scala的原字字符串和符号字面量。
- 字符字面量
字符字面量可以是在单引号之间的任何Unicode字符,如:

单引号除了可以摆放字符之外,还可以提供一个前缀反斜杠的八进制和十六进制的表示字符编码号的数字。
八进制必须在'\0'和'\377'之间,十六进制的是以前缀\u的四位十六进制的数字的通用Unicode字符方式给出。例如:

还有一些字符字面量被表示成特殊的的转义序列,如下图

例如:
- 字符串字面量、
字符串字面量是由双引号(“)包括的字符组成:

由于这种语法对于大量转义序列或跨行若干的字符串很笨拙。因此,Scala为原始字符串引入了一种特殊的语法。即以同一行里的三个引号(""")作为开始和结束。内部的原始字符串可以包含无论何种任意字符,包括新行、引号和特殊字符,当然同一行的三个引号(""")除外。如下:

由于第二行前导的空格被包含在字符串里面。为了解决这个问题,字符串类引入了stripMargin方法。使用方式是,把管道符号(|)放在每行的前面,然后对整个字符串调用sripMargin,如下图:

- 符号字面量
符号字面量被写成'<标识符>
1.3 操作符和方法
- Scala为基本类型提供了丰富的操作符集。这些操作符实际上只是普通方法调用的另一种表现形式。例如,1+1与(1).+(1)其实是一回事。

- 事实上,Int包含了+的各种类型参数的重载方法。例如,另一个+方法的参数和返回类型都是Long。如果把Long加到Int上,就将转而调用这个+方法:

- Scala里的操作符不是特殊语法,任何方法都可以是操作符。到底是方法还是操作符取决于你如何使用
1.4 数字运算
任何数类型都可以使用中缀操作符,+、-、*、/、%做数字计算,其中%符号得到的浮点数余数部分不遵循IEEE754标准(计算余数时使用四舍五入的除法,而不是去尾除法)的定义。

1.5 关系和逻辑操作
- 关系方法包括:> 、 <、>= 和<=,可以用来比较类型并产生Boolean结果。还可以用一元操作符!改变Boolean值。

- 逻辑方法、逻辑与(&&)和逻辑或(||),以中缀方式调用Boolean操作数并产生Boolean结果。如

1.6 位操作符
- Scala包含了可以对整数类型的单个位执行操作 的若干操作方法,有按位与运算(&)、按位或运算(|)、按位异或运算(^)。一元按位取补操作符(~,方法unary_~)反转它的操作数的每一位。例如:

- Scala整数类型还提供了三个位移方法,分别是左移(<<)、右移(>>)和无符号右移(>>>)
1.7对象相等性
如果想要比较一下看看两个对象是否相等,可以用==或者它的反义!=。==对所有对象都起作用,不仅是基本类型,还可以比较列表,还能进一步比较不同类型的两个对象,甚至可以比较null或者任何可能是null的东西,不会有任何异常抛出。

1.8操作符的优先级和关联性

在上表以降序方式列举了以方法第一个字段判定的优先级,同一行的字符具有同样的优先级。表中的字符位置越高,以这个字符开始的方法具有的优先级就越高,举例如下:

除了上面提到的优先级规则外,还有以等号结束的赋值操作符。如果操作符以等号字符(=)结束,且操作符并非比较 操作符<=,>=,==或=,那么这个操作符的优先级与赋值符(=)相同。也就是说,它比其他操作符的优先级都低。
Scala实践2的更多相关文章
- Scala实践14
1.Scala的future 创建future import scala.concurrent._ import ExecutionContext.Implicits.global object Fu ...
- Scala实践13
1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...
- Scala实践12
1.内部类和抽象类型成员作为对象成员 内部类 在Scala中,可以让类将其他类作为成员.这些内部类是封闭类的成员.在Scala中,这样的内部类绑定到外部对象.假设希望编译器在编译时阻止我们混合哪些节点 ...
- Scala实践11
1.1泛型类 泛型类是将类型作为参数的类.它们对集合类特别有用. 定义泛类型:泛型类将类型作为方括号内的参数[].一种惯例是使用字母A作为类型参数标识符,但是可以使用任何参数名称. class Sta ...
- Scala实践10
1.模式匹配 模式匹配是一种根据模式检查值的机制.它是switch(Java中语句)的更强大版本,它同样可以用来代替一系列if / else语句. 句法 匹配表达式具有值,match关键字和至少一个c ...
- Scala实践9
1.特征 Traits用于在类之间共享接口和字段.它们类似于Java 8的接口.类和对象可以扩展特征,但是特征不能被实例化,因此没有参数. 定义一个特征 最小特征只是关键字trait和标识符: tra ...
- Scala实践6
1 if表达式 Scala中if...else..表达式是有返回值的,如果if和else返回值类型不一样,则返回Any类型. scala> val a3=10 a3: Int = 10 sca ...
- Scala实践8
1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" ...
- Scala实践7
一.类 1.1简单类和无参方法 类的定义通过class关键字实现 scala> class Dog { | private var leg = 4 | def shout(content: St ...
- Scala实践5
一.Scala的层级 1.1类层级 Scala中,Any是所其他类的超类,在底端定义了一些有趣的类NULL和Nothing,是所有其他类的子类. 根类Any有两个子类:AnyVal和AnyRef.其中 ...
随机推荐
- navicat ssh通道受限问题处理
navicat 链接数据库 使用navicat 的ssh通道连接数据库回遇到权限问题 错误代码如下: 80070007: SSH Tunnel: Server does not support dif ...
- web.xml和@WebServlet
web.xml <servlet> <servlet-name>DZDYServlet</servlet-name> <servlet-class>包名 ...
- java GUI(图形用户界面)
GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...
- element-ui后台管理系统表单resetFields功能实现
项目中有‘新增’和‘编辑’弹出dialog功能,并且为同一个dialog. html代码: 新增时,这样的样式 编辑时,这样的样式 所以在编辑完关闭dialog后,需要清空表单,一开始简单的使用了el ...
- H3C 迭代查询
- vue组件之间通过query传递参数
需求: 从 任务列表进入 任务详情 ,向详情页传递当前 mission_id 值 路由关系: //查看任务列表 { path: '/worklist', name: 'worklist', compo ...
- C/C++ 获取键盘事件
Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件 #include <conio.h> #include <i ...
- [数论] hdu 5974 A Simple Math Problem (数论gcd)
传送门 •题意 一直整数$a,b$,有 $\left\{\begin{matrix}x+y=a\\ LCM(x*y)=b \end{matrix}\right.$ 求$x,y$ •思路 解题重点:若$ ...
- codeforces gym100801 Problem G. Graph
传送门:https://codeforces.com/gym/100801 题意: 给你一个DAG图,你最多可以进行k次操作,每次操作可以连一条有向边,问你经过连边操作后最小拓扑序的最大值是多少 题解 ...
- LeetCode20_Valid Parentheses有效的括号(栈相关问题)
题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可 ...