《快学scala》读书笔记(1)
第一章 基础
1.安装scala解释器
(1)scala-2.12.1.msi
(2)配置环境变量:SCALA_HOME = D:\Program Files\scala
Path= %SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;
ClassPath =.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar.;
(3)验证解释器是否安装成功。
进入命令行键入scala看是否成功


如上图,8*5+2的结果是42,是Int型;42*0.5=21.0得到的是Double型;"Hello,"+res0=Hello,42得到的是String类型
res2.to加tab键解释器会给出以下类型
2声明值和变量
(1)除了直接使用res0和res1这些名称之外,也可以自己定义名称,并且可以在后续的表达式中使用这些名字。

val 定义的值实际上是一个常量,在scala中,常量是一个无法改变的内容,所以answer=0会发生报错。如果要声明一个可以改变的量,可以用var:

在scala中,我们鼓励使用val,除非需要真的改变一个变量的内容,一般情况下我们都用val
在scala中,变量或者函数的类型总是写在变量或者函数的名称的后面
在变量声明或者赋值语句之后,我们并没有用分号。在Scala中,仅当同一行代码中存在多条语句的时候,才需要用分号分开。

将xmax和ymax设置为100;greeting和message都是字符串
3常用数据类型
(1)Scala中7种数值类型:Byte,Char,Short,Int,Long和Double以及一个Boolean类型。这些类型是类,Scala并不区分这是基本类型还是引用类型,可以对数字执行如下方法,

1.toString() //产出字符串"1"
(2)intersect()方法输出两个字符串的共通的一组字符
"Hello".intersect("World") //输出"lo"
(3)Scala提供了RichInt,RichDouble,RichChar等。
1.to(10)====>Int值1首先转换为RichInt值,然后在应用to方法
(4)BigInt和BigDecimal类。用于任意大小的数字(有穷),这两个类对应的类分别是
java.math.BigInteger和java.math.BigDecimal
(5)在Scala中,我们用方法而不是强制类型转换来做数值类型之间的转换。
如99.44toInt得到99;
99.toChar得到'c';
toString方法可以将任意对象转换为字符串;
要将包含数字的字符串转换为数值,使用toInt或者。例如:"99.44".toDouble得到99.44
4算数和操作符重载
(1)+ - * / %等操作符实际上是方法
通用公式:a 方法 b<=======>a.方法(b),这里的方法是带有两个参数的方法(一个是隐式的和一个是显式的)
a + b<======>a.+(b) //这里+号是方法名
(2)Scala没有提供++和--操作符,我们一般使用+=1或者-=1
counter+=1 //将counter进行递增的操作,Scala没有++
(3)对于BigInt和BigDecimal对象,可以用常规的方法使用操作符
val x:BigInt=1234567890
x*x*x //将产出1223434523452345242
5.调用函数和方法
(1)Scala中使用数学函数不需要不需要调用静态方法
sqrt(2) //将产出1.4122.........
pow(2,4) //将产出16.0
min(3,pi) //产出3.0
这些数学函数式在scala.math中的。当然也可以进行人为的定义,
import scala.math._ //在scala中,_字符是通配符,类似于Java中的*
在使用scala.开头的包的时候,我们可以省略scala前缀。例如,import math._等同于import scala.math._;而math.sqrt(2)等同于scala.math.sqrt(2)
引入包:import 包名._
(2)没有参数且不改变当前对象的方法不带圆括号。不带参数的Scala方法通常不带圆括号。
"Hello".distinct //,作用是获得字符串中不重复的字符,该方法没有圆括号。
(3)apply()方法
在Scala中,我们通常会使用类似函数调用的方法。比如:如果s是一个字符串,那么s(i)就是该字符串的第i个字符。
def apply(n:Int):Char
"Hello"(4)<======>"Hello".apply(4) //产出'o'

如下语句:BigInt.apply("1234567890"),这个语句将会产生一个新的BigInt对象,不需要使用new;像这样用伴生对象的apply方法是Scala中构建对象的常用手法,如Array(1,4,9,16)会返回一个数组,用的就是Array伴生对象的apply方法。
《快学scala》读书笔记(1)的更多相关文章
- 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)
笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...
- 算法设计手冊(第2版)读书笔记, Springer - The Algorithm Design Manual, 2ed Steven S.Skiena 2008
The Algorithm Design Manual, 2ed 跳转至: 导航. 搜索 Springer - The Algorithm Design Manual, 2ed Steven S.Sk ...
- [读书笔记]设计原本[The Design of Design]
第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...
- 《Unix编程艺术》读书笔记(1)
<Unix编程艺术>读书笔记(1) 这两天開始阅读该书,以下是自己的体会,以及原文的摘录,尽管有些东西还无法全然吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance ...
- 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
[英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...
- 【英语魔法俱乐部——读书笔记】 2 中级句型-复句&合句(Complex Sentences、Compound Sentences)
[英语魔法俱乐部——读书笔记] 2 中级句型-复句&合句(Complex Sentences.Compound Sentences):(2.1)名词从句.(2.2)副词从句.(2.3)关系从句 ...
- Computer architecture Computer organization
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...
- 图解TCP/IP读书笔记(一)
图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...
- 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)
<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...
- 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)
<Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...
随机推荐
- Vue 基于node npm & vue-cli & element UI创建vue单页应用
基于node npm & vue-cli & element UI创建vue单页应用 开发环境 Win 10 node-v10.15.3-x64.msi 下载地址: https ...
- linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
一.部署docker registry 生产环境中我们一般通过搭建本地的私有镜像仓库(docker registry)来拉取镜像. 1.拉取registry镜像 [root@k8 ...
- 对SQL 优化,提升性能!
对SQL 进行优化能够有效提高SQL 语句的执行效率,降低系统资源开销,是开发者提高后端系统处理能力的首选方案. 新产品上线后,随着运营推广活动的开始,业务进入快速增长期,数据库作为后端系统唯一或者主 ...
- codevs 4064 组合 x
很久之前发过啦~不过删掉了...再发一下 4064 组合 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 组合就 ...
- Improving Network Management with Software Defined Networking
Name of article:Improving Network Management with Software Defined Networking Origin of the article ...
- Vue中的MVVM框架
ViewModel:数据双向绑定 场景: 针对具有复杂交互逻辑的前段应用 提供基础的架构抽象 通过Ajax数据持久化,保证前端用户体验 什么是vue.js? 是一个轻量级的mvvm框架 数据驱动+组 ...
- C#配置IIS站点
一.源码特点 1. 一些基于ASP.NET应用产品,在用户环境中都无可避免的涉及到部署到目标环境的应用服务器上,而配置站点是此过程的核心步骤,此源码对过程进行了高度封装,从创建IIS所需 ...
- PROD异机全备份恢复验证实施文档
PROD异机全备份恢复验证实施文档 ******利用10月25日的全量备份.10月26日当天的归档日志及当前redo日志,恢复数据库到故障前数据库状态****** 准备工作:source 源库:PRO ...
- EXISTS 和 IN 的查询效率问题
mysql使用总结: 一:EXISTS 和 IN 的查询效率问题 1:当a表的数据小于b表中的数据时 用 IN 的效率是要小于用 EXISTS 的效率 SELECT * FROM a WHERE id ...
- html常见兼容性问题?
1.双边距BUG float引起的 使用display 2.3像素问题 使用float引起的 使用dislpay:inline -3px 3.超链接hover 点击后失效 使用正确的书写顺序 li ...