基本类型和操作

scala 的基本类型包括如下几种

数类型

​ 整数类型 :Byte Short Int Long

​ 小数类型: Float Double

字符类型:Char 用'' 单引号包裹,是Unicode字符 转义字符也属于字符类型。

字符串类型: String 【属于java.lang包】 用" " 双引号包裹 。 **""" """ ** 三引号表示,为原始字符串

布尔值: Boolean

除了String 属于Java.lang 包,其他都属于 scala 包

如:Int 全名为 scala.Int ,但是,scala包和java.lang 包被每个源文件自动引用,所以可以简写为 Int

字面量 就是直接写在代码里的常量值。

    println(
"""hello
world
""")
/*
显示如下
hello
world
*/ //因为""" 里面是原始字符,换行,空格,缩紧什么都会保持原样,所以就出现了字符串错位的情况,为了解决这个问题,我们使用 stringMargin方法。如下
    println(
"""|hello
|world
""".stripMargin)
/*
hello
world
/*
符号字面量

'<标识符> 标识符可以是任何字母或数字(不能为数字开头)。如:'hellokitty 。符号字面量的唯一作用就是显示名字。

scala> val a = 'hello
// s: Symbol = 'hello
scala> a.name
// res9: String = hello
/*注意区分 String类型
scala> val s = "hello"
//b: String = hello
scala> s.name //报错
scala> val m = '1234567 //报错
scala> val o = '1234a //报错
scala> val n = 'a122456 //没问题

符号字面量是 scala.Symbol 的实例。 符号是限定的,如果有两个一样的符号字面量,那么两个字面量指向同一个Symbol对象。

操作符和方法

scala没有传统别的语言意义上的运算符,所有的+ - * / 等运算符其实是对象的方法。例如:

1 + 2 //实际是:
1.+(2) //调用了 1的+ 方法,并且把2作为参数传给它。

+ 是操作符,更具体的说是中缀操作符。操作符标注,不仅限于像+ 这种其他语言里看上去像操作符的东西,任何方法都可以被当作操作符来标注。例如上次我们的那个 类和对象里面有一个方法

val result = cs.add(100)

就可以写成如下形式

val result = cs add (100)

因为仅有一个参数,所以,小括号也可以省略,如下:

val result = cs add 100

scala 中,操作符不是特殊的语法,任何方法都可以是操作符。此二者只是对同一个函数,不同的使用方式造成的名字不同而已。

前缀操作符

前缀操作符是一元的,操作符在前,操作数在后。如-10,这些和中缀操作符一样,都是值对象调用方法的简写形式。

然而,他们的方法写法为unary_.如:

  println(-2)
println(2.unary_-)

标识符中能作为前缀操作符的只有 + - ! ~ 四个。

后缀操作符

后缀操作符也是一元的。操作数在前,操作符在后。后缀操作符,是不用点或括号的不带任何参数的方法。在scala中,方法调用的空括号可以省略。

惯例是,如果方法带有副作用那就加上括号,如println(),如果没有副作用就去掉括号。

    println("Hello World".toLowerCase())//点调用,有括号
println("Hello World".toLowerCase) // 省略了括号
println("Hello World" toLowerCase) //后缀操作符

注意,后缀操作符和操作符标注是有区别的。

其余的操作符运算、优先级,和其他语言没什么差别。

scala --操作符和运算的更多相关文章

  1. learning scala 操作符

    scala 操作符: 算术运算符:  +  - *  / % 关系统运算符: > , < ,= ,!= ,>=,<=, 逻辑运算符: && . || , ! 位 ...

  2. scala操作符&运行

    ---恢复内容开始--- #操作符运算 数学操作符 + - * / % 比较操作符 < > >= =< 逻辑操作符 && || 对等操作符 ==   != 位操 ...

  3. Scala 操作符与提取器

    实际上Scala没有操作符, 只是以操作符的格式使用方法. 操作符的优先级取决于第一个字符(除了赋值操作符), 而结合性取决于最后一个字符 Scala的操作符命名更加灵活:) 操作符 中置操作符(In ...

  4. scala 实现日期运算

    在scala程序中,有时我们需要对日期进行运算,比如一天之前,两天之前,一个月之前等等,本博文给出了简单的实现方式 val cal = Calendar.getInstance cal.add(Cal ...

  5. Scala基础(1)

    Scala基础语法 声明与定义: val,常量声明                       val  x:T(把x声明成一个类型为T的常量)  x是变量的名字,T是变量的类型          v ...

  6. Scala学习笔记——入门

    0.在 scala> 下运行Scala程序 首先cd到.scala文件所在的目录下 scalac这个scala文件,然后import package的名字.object的名字 然后就能使用 ob ...

  7. 大数据技术之_27_电商平台数据分析项目_02_预备知识 + Scala + Spark Core + Spark SQL + Spark Streaming + Java 对象池

    第0章 预备知识0.1 Scala0.1.1 Scala 操作符0.1.2 拉链操作0.2 Spark Core0.2.1 Spark RDD 持久化0.2.2 Spark 共享变量0.3 Spark ...

  8. js中的位运算

    按位运算符是把操作数看作一系列单独的位,而不是一个数字值.所以在这之前,不得不提到什么是"位": 数值或字符在内存内都是被存储为0和 1的序列,每个0和1被称之为1个位,比如说10 ...

  9. 使用栈Stack对整数数值的运算表达式字符串进行运算C#

    这里如果对于形如字符串“((6+((7+8)-9)*9+8/2)-3)/2”的运算表达式进行运算.接触过此类的同学知道这种存在着运算符优先级的表达式,不能直接从左到右进行运算,我们使用OperandS ...

随机推荐

  1. bzoj 4556 [Tjoi2016&Heoi2016]字符串——后缀数组+主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4556 本来只要查 ht[ ] 数组上的前驱和后继就行,但有长度的限制.可以二分答案解决!然后 ...

  2. js去除运营商或者路由器添加的广告脚本

    是不是偶尔发现在家里看网页的时候回插入一个广告,很烦人.开发的网站,上传到了阿里云 oss,设置了域名解析,但是在家里晚上访问的时候,总会在页面添加一个广告,导致页面卡主,一开始以为是路由器的问题,以 ...

  3. python中hashlib md5

    如下两种方法,结果相同 import hashlib import time m = hashlib.md5() m.update(str(time.time()).encode('utf-8')) ...

  4. DataSet和DataTable有用的方法

    每一个DataSet都是一个或多个DataTable 对象的集合(DataTable相当于数据库中的表),这些对象由数据行(DataRow).数据列(DataColumn).字段名(Column Na ...

  5. Servlet容器请求处理

    红色部分为本章所述模块 所讲述的请求流程模块,大家已经很清楚了.那怎么给大家去讲的更清晰,大家理解的更容易呢?当然是,带着问题去学习,吸收或许会更快些啦.:) 开篇之前,给大家提以下几个问题,这些问题 ...

  6. eclipse一些操作记录

    1.eclipse debug的时候想知道一个表达式执行的结果值,可以选中,按ctrl+shift+i来看返回的结果值:   2.eclipse java build path有个source,将so ...

  7. 大家都对vertical-align的各说各话

    原文地址:http://www.blueidea.com/tech/web/2008/5892.asp 最近几天仔细研究了一下vertical-align这个属性,结果让我大吃一惊,这个很“资深”的C ...

  8. Python 示例 饮水记录

    因为每天都需要喝水  这是非常重要的 目录结构: ├─bin│ │ start.py│ ││ └─__pycache__│ start.cpython-36.pyc│├─core│ │ src.py│ ...

  9. 1031 Hello World for U (20 分)

    1031 Hello World for U (20 分) Given any string of N (≥5) characters, you are asked to form the chara ...

  10. 基于Linux的Samba开源共享解决方案测试(三)

    在极限写场景下,对于网关的网络监控如图: 在极限写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于网关的网络监控如图: 在极限混合读写场景下,对于客户端的网络监控如图: 双NAS网关100 ...