scala基础

安装scala(不推荐使用最新版本,2.11.x够用了)


  1. 这里我选择2.11.12版本,在下载页面往下拉,选择scala-2.11.12.msiwindows用户),msi安装比较简单,一直点点就行。如果下载速度慢,建议用迅雷。
  2. 安装完后,配置环境变量,如图:

  • 在命令行中输入scala -version验证是否安装成功。

声明值和变量

  1. 安装成功后在命令行中输入scala并回车就能打开scala的解释器。每次输入命令,解释器都会显示出结果。

  1. 正如你所看到的,解释器会给结果自动命名和显示结果类型,并且在后续操作中可以继续使用。而解释器这些操作过程也被称为“读取-求值-打印” 循环(read-eval-print-loop)即REPL,后面为了方便表示,我们就称解释器为REPL
  2. 你还能自定义自己的名称:
  1. scala> val ans = 8*5+2
  2. ans:Int = 42
  1. 这里已val定义的值实际上是个常量,相当于java中的final,值不可改变。定义变量使用var
  2. 一般情况下,推荐使用val,除非你真的需要改变它的内容。在定义的时候你还可以指定变量的类型,如:
  1. var ans:Int = 8*5+2
  1. 说明:在scala中,变量和函数的类型总是写在变量和函数的名称后面。

常用类型

  1. scala有七种数值类型:ByteCharShortIntLongFloatDoubleBoolean类型。scala并没有明确区分基本类型和引用类型,就都像java中的包装类,可以直接调用方法。
  1. 1.toString() // "1"
  2. 99.99.toInt() // 99
  3. 99.toChar() // 'c'
  4. // 在scala中','逗号可以省略,括号内没有参数可以不写括号
  5. 1 toString //不建议哈
  6. 1.toString //这个就可以
  7. // 在scala中有隐式转换,比如:String对象被隐式转换成StringOps对象,追加上百种字符串操作。
  8. "hello".intersect("world") //返回 "lo"
  9. // 同样地,scala还提供了RichInt,RichDouble,RichChar等,为原来的类型增加所不具备的便捷方法。
  10. 1.to(3) // 1,2,3
  11. 1.until(3) // 1,2

通配符_

  1. scala中,_字符是通配符,类似java的*
  1. val a:Int=_ // a=0
  2. val b:Double=_ // b=0.0
  3. val c:String=_ //c=null
  4. val d = _ // 报错

伴生对象

  1. scala中,类都有一个伴生对象,其方法就跟java中的静态方法一样,类名+方法名就可以直接调用。

apply方法

  1. scala中,我们读取字符串中的一个字符是这样的s(i)。
  1. var s = "hello"
  2. println(s(4)) // 'o'
  1. 而在java中是这样的:
  1. String s = "hello";
  2. char c = s.charAt(4) // 'o'
  1. 其实scala之所以能这样获取字符串中的字符,是因为StringOps里面的apply方法。
  1. s(i) 相当于 s.apply(i) //apply可以直接省略。
  1. 很多类的伴生对象都实现了apply方法,所以我们可以直接 对象名() 实现apply方法。
  1. val array:Array[Int] = Array(1,2,3) // 使用apply直接创建数组。

最后

码字不易,喜欢的点个赞呗。

系统学习scala--基础的更多相关文章

  1. 【Python系统学习】基础篇

    这次真的是最后一次了!第三次滚Python的基础.走了太多弯路.认真一点!菜鸟! 教程 转义字符 \ 可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\ ...

  2. Scala的安装,入门,学习,基础

    1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...

  3. Scala系统学习(三):Scala基础语法

    如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...

  4. Scala学习(一)--Scala基础学习

    Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...

  5. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  6. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇

    前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...

  7. scala基础学习(一)

    scala学习 scala与java的不同之处: 1.scala中任何一个操作符都是一个方法. s = 1+2;    可以写作:s=(1).+(2) 2.异常捕获采用模式匹配的方式. try { v ...

  8. 【Scala学习之一】 Scala基础语法

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  9. SCALA基础知识学习

    注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...

  10. 如何快速学习Scala

    大数据学习过程中,会学习非常多的技术,但SCALA无疑是必不可少,那我们在大数据技术的学习过程中,如何快速的认识scala,并且学习它,感谢科多大数据公司的余老师提供的详细素材,本人整理成章,希望对你 ...

随机推荐

  1. 分析 Nanocore

    Nanocore是一个非常强大的木马控制系统,当Nanocore木马运行时,我们发现Windows Defender可以很好地识别威胁.本文的目的是分析Nanocore的传播方式,它是怎样感染Wind ...

  2. Vue 3.0 Composition API - 中文翻译

    Composition API 发布转载请附原文链接 https://www.cnblogs.com/zgh-blog/articles/composition_api.html 这两天初步了解了下 ...

  3. ES6让字符串String增加了哪些好玩的特性呢?

    确实因为现在天气变热了,所以一天天的这么写我也很累.所以如果阅读的时候有什么错误还请大家指出来,不好意思.学习永无止境. OK,今天继续讲解ES6系列知识 学过上一节的解构赋值就知道,ES6确实给我们 ...

  4. jdk1.7和jdk1.8在接口方面的改动

    1.JDK7及其之前,接口中都是抽象方法,且不能出现static方法 2.接口的变量都是public final static 全局静态常量,无变化 3.接口中可以添加非抽象方法(static),通过 ...

  5. 只会Vue怎么开发小程序?vue和微信小程序的到底有哪些区别?

    写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张生命周期图对比下: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. v ...

  6. Imagelab-0-QT label显示 opencv 图像

    Imagelab-0-QT label显示 opencv 图像 opencvc++qtimagelab 开始之前 这其实也是opencv 处理图像的系列, 只是想我们在进一步复杂化我们的代码之前, 每 ...

  7. mybatis源码学习(四):动态SQL的解析

    之前的一片文章中我们已经了解了MappedStatement中有一个SqlSource字段,而SqlSource又有一个getBoundSql方法来获得BoundSql对象.而BoundSql中的sq ...

  8. VB中使用字典存储类对象

    2019独角兽企业重金招聘Python工程师标准>>> NODE类 Public pNext As NODE Public pPrev As NODE Public data As ...

  9. C++课程设计详解-12306的模拟实现

    目录 设计思路... 3 思路分析:.... 3 数据组织:.... 4 具体功能实现过程... 4 管理端具体功能实现:.... 4 用户端具体功能实现:.... 5 调试截图和调试过程中遇到的问题 ...

  10. HDU 1159.Common Subsequence【动态规划DP】

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...