1. Scala 的一些基础类型

Scala 提供了 8 种基础类型,对应 Java 的 8 种基本数据类型。

其中包括:

整数类型:Byte, Short, Int, Long, Char

浮点类型:Float, Double

布尔类型:Boolean

与 Java 不同,这 8 种数据在 Scala 中都可以当做对象使用。例如, Int 类型定义在 scala.Int 中。

这 8 种类型在0 Scala 编译时,都会转为 Java 中对应的基本类型,所以基本不会有额外的开销。

加上常用的字符串类型 String (直接使用 java.lang.String),构成了在 Scala 中最常用的基础类型。

2. 字面量

字面量是在代码中可以直接写入常量的一种方式。包括:

2.1 整数字面量

  • Int, Long, Short, Byte 四种类型
  • 有十进制和十六进制 2 种形式
  • 以 0X 或 0x 开头,代表十六进制的数,以 0-9a-fA-f 组成

2.2 浮点数字面量

  • Double 或 Float 类型
  • 以 F 或 f 结尾就是 Float 类型,反之是 Double 类型
  • 由十进制数字,小数点(可选),E 或 e(可选,代表指数)组成

2.3 字符字面量

  • Char 类型
  • 由一对单引号,中间任意 Unicode 字符组成
  • 中间的可以是原字符,也可以是 Unicode 码
  • 用反斜杠 \ 转译特殊字符,包括:
    • 换行符 \n
    • 退格符 \b
    • 制表符 \t
    • 换页符 \f
    • 回车符 \r
    • 双引号 \"
    • 单引号 \'
    • 反斜杠 \\
  • 可以使用 Unicode 字符定义变量,当然不推荐这么做
val B\u0041\u0044 = 1 // 等价于 val BAD = 1

2.4 字符串字面量

  • String 类型
  • 由一对双引号,中间的字符 Unicode 组成
  • 需要转译的字符,规则如字符字面量
  • 可以使用一对 """,中间使用原生字符串(即包括所有字符串,换行,需要转译的任何字符)
val str = """Welcome
Type "Help"."""

2.5 符号字面量

  • scala.Symbol 类型
  • 写法是 'ident,ident 可以是任何字母和数字组成的标识符
  • 通常用在动态类型语言中用来当作标识符的场合
  • 符号字面量会被内部化,即相同的符号,两次引用指向同一个 Symbol 对象(类似 Java Integer 对象对于 -128-127 的处理)

2.6 布尔值字面量

  • Boolean 类型
  • false, true

2.7 函数字面量

  • 之后细讲

3. 字符串插值

Scala 提供一种灵活的机制,字符串插值,支持在字符串中嵌入表达式。

3.1 s 插值器

  • s 插值器对内嵌的每个表达式求值,对求值调用 toString 的方法。
  • 用 $ 符号开始一个表达式
  • 对于单变量,直接在 $ 后面给出变量名,读到之后第一个非标识符为止
  • 对于包含非标识符的字符,用 {} 括起来
    val name = "Gerrard"
val str1 = s"Hello, $name!"
val str2 = s"The answer is ${2 * 3}"

3.2 raw 插值器

  • 不识别转译字符
  • 其余功能同 s 插值器
    val str1 = raw"\\\\"  // 打印结果是四个\

3.3 f 插值器

  • 支持 printf 风格的指令(似乎是 C语言的风格?)
  • 指令放在表达式之后,以 % 开始
    val str1 = f"${math.Pi}%.5f" // 输出结果 3.14159

4. 操作符

Scala 中定义了一系列的操作符(与 Java 类似,不细讲):

  • 算数操作符:加(+) 减(-) 乘(*) 除(/) 取余(%)
  • 关系操作符:大于(>) 小于(<) 大于等于(>=) 小于等于(<=) 一元取反(!)
  • 逻辑运算符:逻辑与(& 和 &&) 逻辑或(| 和 ||)
  • 位运算符:按位与(&) 按位或(|) 按位异或(^) 一元的位反码(~) 左移(<<) 右移(>>) 无符号右移(>>>)

5. 操作符即方法

在 Scala 中,任何操作符都是方法,例如:

    val sum = 1 + 2

其本质只是在 Int 类型中定义了一个名为 + 的方法,这个方法接收一个 Int 型的参数

它等价于

    val sum = 1.+(2)

反之,任何操作符也可以当做方法使用

    val s = "Hello World!"
s.indexOf("o")
s indexOf "o"

上面两个调用是等价的

当 s.indexOf("o"),indexOf 就是方法

当 s indexOf "o",indexOf 就是操作符

Scala 基础(3)—— 基础类型和基础操作的更多相关文章

  1. 【Learning Python】【第二章】Python基础类型和基础操作

    基础类型: 整型: py 3.0解决了整数溢出的问题,意味着整型不必考虑32位,64位,有无符号等问题,你写一个1亿亿亿,就是1亿亿亿,不会溢出 a = 10 ** 240 print(a) 执行以上 ...

  2. .NET基础 (04)基础类型和语法

    基础类型和语法1 .NET中所有内建类型的基类是什么2 System.Object中包含哪些方法,哪些是虚方法3 值类型和引用类型的区别4 简述装箱和拆箱原理5 C#中是否有全局变量6 struct和 ...

  3. mysql基础之对库表操作

    原文:mysql基础之对库表操作 查看一下所有的库,怎么办? Mysql>Show databases; 选库语句: Use 库名 创建一个数据库: create database 数据库名 [ ...

  4. Hadoop基础-HDFS的API常见操作

    Hadoop基础-HDFS的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习HDFS时的一些琐碎的学习笔记, 方便自己以后查看.在调用API ...

  5. Java基础教程:多线程基础(1)——基础操作

    Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...

  6. Scala学习(一)——基础语法

    Scala语言是一种面向对象语言,结合了命令式(imperative)和函数式(functional)编程风格,其设计理念是创造一种更好地支持组件的语言. 特性 多范式(Multi-Paradigm) ...

  7. selenium基础(下拉菜单操作)

    selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Se ...

  8. .NET基础拾遗(1)类型语法基础和内存管理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  9. .NET基础拾遗(1)类型语法基础和内存管理基础【转】

    http://www.cnblogs.com/edisonchou/p/4787775.html Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串 ...

随机推荐

  1. convolution,fft, 加速

    零零星星挖坑几个了,都没填土,实在是欠账太多,闲话少说吧,还是多记录总结一下.今天的主题是围绕convolution和加速 记得之前看过lecun他们组的一篇文章,是fft加速convolution的 ...

  2. 前端框架之bootstrap及相关技术网站

    1.web框架之bootstrap bootstrap来源Twitter,是一个CSS/HTML框架,它是基于HTML,CSS,JavaScript下的,使用简洁,当中提供了很多HTML和CSS 如用 ...

  3. JS-输入数字输出大写中文

    function(n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', ...

  4. JavaScript的执行机制

    JavaScript是单线程的,任务的执行时自上而下的,这就有了一个问题,当遇到一个比较耗时的任务时,下面的代码就会被阻塞,这就意味着卡死.所以js是有异步的,它的实现主要是通过事件循环(event ...

  5. 【例题收藏】◇例题·V◇ Gap

    ◇例题·V◇ Gap 搜索训练开始了……POJ的数据比ZOJ强多了!!看来不得不写正解了 +传送门+ ◇ 题目 <简要翻译> 有一个四行九列的矩阵——在第1~4行.2~8列上填上数字 11 ...

  6. 爬虫学习(十八)——selenium解决javascript渲染

    selenium 是一个用于Web应用程序测试的工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fir ...

  7. mybatis中oracle转mysql

    刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程.人菜的很,没啥参考价值. 测试时: 将现有的oracle库转为mysql: 用的Navicat自带数据传输功能,简单粗暴 出现的问题: 1 ...

  8. springboot整合mybatis笔记

    1首先创建一个springboot项目 创建项目的文件结构以及jdk的版本 选择项目所需要的依赖 之后点击finish,完成创建 2以下是文件结构 看一下啊pom.xml; <?xml vers ...

  9. 获取点击li的当前索引

    获取点击li的当前索引 点击特定次序的li  展现特定的页面 $('.wgsb').find('.wangge_data_list li').click(function(){ var index=$ ...

  10. python基础之流程控制、数字和字符串处理

    流程控制 条件判断 if单分支:当一个“条件”成立时执行相应的操作. 语法结构: if 条件: command 流程图: 示例:如果3大于2,那么输出字符串"very good" ...