第一章  基础

   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)的更多相关文章

  1. 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)

    笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...

  2. 算法设计手冊(第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 ...

  3. [读书笔记]设计原本[The Design of Design]

    第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...

  4. 《Unix编程艺术》读书笔记(1)

    <Unix编程艺术>读书笔记(1) 这两天開始阅读该书,以下是自己的体会,以及原文的摘录,尽管有些东西还无法全然吃透. 写优雅的代码来提高软件系统的透明性:(P134) Elegance ...

  5. 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】

    [英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...

  6. 【英语魔法俱乐部——读书笔记】 2 中级句型-复句&合句(Complex Sentences、Compound Sentences)

    [英语魔法俱乐部——读书笔记] 2 中级句型-复句&合句(Complex Sentences.Compound Sentences):(2.1)名词从句.(2.2)副词从句.(2.3)关系从句 ...

  7. Computer architecture Computer organization

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCEComputer architectureNINTH EDITION C ...

  8. 图解TCP/IP读书笔记(一)

    图解TCP/IP读书笔记(一) 第一章 网络基础知识 本学期的信安概论课程中有大量的网络知识,其中TCP/IP占了相当大的比重,让我对上学期没有好好学习计算机网络这门课程深感后悔.在老师的推荐下开始阅 ...

  9. 《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

    <Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候 ...

  10. 《Linux/Unix系统编程手册》读书笔记7 (/proc文件的简介和运用)

    <Linux/Unix系统编程手册>读书笔记 目录 第11章 这章主要讲了关于Linux和UNIX的系统资源的限制. 关于限制都存在一个最小值,这些最小值为<limits.h> ...

随机推荐

  1. 对async/await的研究

    1. 作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行. 写一个async 函数 async functio ...

  2. 8:Spring Boot中thymeleaf模板中使用 Shiro标签

    1,添加 pom.xml grade: compile('com.github.theborakompanioni:thymeleaf-extras-shiro:1.2.1') 2, Subject ...

  3. UTC和GMT

    UTC GMT UTC = Coordinated Universal Time. 中文名称为协调世界时. GMT = Greenwich Mean Time. 中文名称为格林尼治(平)时 UTC = ...

  4. luogu 2219[HAOI2007]修筑绿化带 单调队列

    Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in",& ...

  5. 特征提取算法(4)——LoG特征提取算法

    目录 1.介绍 2.LoG原理 3.数学原理 4.模板性质 1.介绍 LoG(DoG是一阶边缘提取)是二阶拉普拉斯-高斯边缘提取算法,先高斯滤波然后拉普拉斯边缘提取. Laplace算子对通过图像进行 ...

  6. [BZOJ4817][SDOI2017]树点涂色:Link-Cut Tree+线段树

    分析 与[BZOJ3779]重组病毒唯一的区别是多了一个链上求实链段数的操作. 因为每条实链的颜色必然不相同且一条实链上不会有两个深度相同的点(好像算法的正确性和第二个条件没什么关系,算了算了),画图 ...

  7. 获取浏览区变化的方法resize() 方法

    当调整浏览器窗口的大小时,发生 resize 事件. resize() 方法触发 resize 事件,或规定当发生 resize 事件时运行的函数. <html> <head> ...

  8. 解决Acunetix 12中文汉化的方法

    最近下载一款测试软件acunetix,苦于满屏英文的苦恼,看不懂,于是乎就问度娘,结果度娘就是给中文破解包: 我是12版的,网上提供的都是11版的,没法用.怎么办呢?还好我是做测试的,平时做兼容性测试 ...

  9. 《SQL Server 2012 T-SQL基础》读书笔记 - 8.数据修改

    Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdat ...

  10. JS在页面输出九九乘法表

    <!--小练习,练习使用循环实现一个九九乘法表 第一步,最低要求:在Console中按行输出 n * m = t 然后,尝试在网页中,使用table来实现一个九九乘法表 --> <! ...