scala基础

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


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

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

声明值和变量

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

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

常用类型

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

通配符_

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

伴生对象

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

apply方法

在scala中,我们读取字符串中的一个字符是这样的s(i)。
var s = "hello"
println(s(4)) // 'o'
而在java中是这样的:
String s = "hello";
char c = s.charAt(4) // 'o'
其实scala之所以能这样获取字符串中的字符,是因为StringOps里面的apply方法。
s(i) 相当于 s.apply(i) //apply可以直接省略。
很多类的伴生对象都实现了apply方法,所以我们可以直接  对象名()  实现apply方法。
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. bm25算法和tfidf

  2. 手机app测试用例怎么写?手机app测试点有哪些?只有干货没有水分,错过绝对后悔!

    一.前言    在当今竞争激烈的市场上一个APP的成功离不开一个可靠的测试工程师.因此,对功能和用户体验有特殊关注的App进行全面测试是必不可少的.如何做到测试用例的百分百覆盖一直是测试用例编写过程中 ...

  3. 测试Thread中的常用方法

    package com.yhqtv.java; /* *测试Thread中的常用方法: * 1.start():启动当前线程:调用当前线程的run() * 2.run():通常需要重写Thread类的 ...

  4. 箭头函数的this指向问题-一看就懂

    OK,对于箭头函数的this 用一句话概括:箭头函数中的this指向的是定义时的this,而不是执行时的this. 如果上面这句话听的是懂非懂或者完全不懂的,没关系,下面会有案例讲解. 举个栗子 来看 ...

  5. Flutter 分页功能表格控件

    老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来. PaginatedDataTable PaginatedDataTable是一个带分页功能的DataTabl ...

  6. XSS Cheat Sheet(basics and advanced)

    XSS Cheat Sheet BASICS HTML注入 当输入位于HTML标记的属性值内或标记的外部(下一种情况中描述的标记除外)时使用.如果输入在HTML注释中,则在payload前加上&quo ...

  7. Windows VHD Create, Attach, 获得Disk序号

    // create_vhd.cpp : Defines the entry point for the console application. // #include "stdafx.h& ...

  8. Cannot find libcrypto in Ubuntu

    https://stackoverflow.com/questions/13811889/cannot-find-libcrypto-in-ubuntu sudo apt-get install li ...

  9. MySQL不同存储引擎下optimize的用法

    optimize命令是mysql的常用优化命令,但是在InnoDB与MyISAM这两个存储引擎中却有很大的分别.本文将对这两个常用的存储引擎进行区分跟实例解析 1.查看mysql当前的存储引擎 一般情 ...

  10. poj_1323 Game Prediction 贪心

    Game Prediction Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11814   Accepted: 5701 ...