Scala新版本学习(1):
1.进官网:https://www.scala-lang.org/
上面就是进入Scala社区后的一个画面,官方对Scala的简单介绍是:Scala将面向对象和函数式编程集合在一个简洁的高级语言中,Scala的静态类型有助于避免复杂应用程序中的错误。Scala既有动态语言那样灵活简洁,同时又保留了静态类型带来的安全保障和执行效率,加上其强大的抽象能力,既能够处理脚本化的临时任务,又能处理高并发场景下的分布式互联网大数据应用。
2.Scala六个特性。
(1)可以和java无缝整合,即在Scala中可以调用java包中的类,或者在Java中也可以调用Scala包中的类。Scala也是运行在JVM上的,因此Java和Scala堆栈可以自由混合以实现完全无缝集成。
(2)类型推断。类型系统不会那么静止。不适用于类型系统。让类型系统来适应你。Scala中,val只能修饰常量,不可变;var是变量的修饰符。定义变量或者常量只能用var或者val。在定义之后,系统会自动的进行类型的推断。
(3)并行和分布式
对集合使用数据并行操作,使用actors(类似于线程)进行并行和分布式。
(4)特质:将Java风格的界面的灵活性与类的强大功能相结合。考虑有原则的多重继承。
(5)模式匹配:匹配值,匹配类型。
(6)高阶函数:方法中的参数可以是另一个方法。函数式编程的一个体现。
3.安装/配置环境变量
1. windows安装,配置环境变量
Ø 官网下载scala2.10:http://www.scala-lang.org/download/2.10.4.html
Ø 下载好后安装。双击msi包安装,记住安装的路径。
Ø 配置环境变量(和配置jdk一样)
l 新建SCALA_HOME
上个步骤完成后,编辑Path变量,在后面追加如下:
;%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin
- 打开cmd,输入:scala - version 看是否显示版本号,确定是否安装成功
4. REPL:读取--->求值--->打印--->循环。Scala解释器读取到一个表达式,对它进行求值,将它打印出来,接着继续读取下一个表达式。发生的过程是,输入的内容被快速的编译成字节码,然后这段字节码交由Java虚拟机执行。
5.声明值和变量
(1)val 定义的值实际上是一个常亮,无法改变其内容。如下:
(2)var可以声明变量类型的值
(3)在赋值的时候,不需要给出值或者变量的类型,这个信息可以从你用来初始化它的表达式推断出来。
(4)在必要的时候也可以指定数据的类型:
从上面可以看到,变量或者函数的类型总是在变量或者函数名称的后面。
(5)在变量声明或者赋值语句之后,并没有用分号,仅当同一行代码中存在多条语句的时候才需要用分号隔开。
6.常用类型:
(1)Scala7种数值类型+1个Boolean类型。Scala并不可以区分基本类型和引用类型。可以对数字执行如下的方法:
如下图中,可以将int类型的1转换为字符串"1"
1.to(10),将会产出range(1,2,3,4,5,6,7,8,9,10),Int值首先被转换成RichInt,然后再应用to方法
(2)Scala中基本类型和包装类型之间的转换是Scala编译器的工作。比如创建一个Int[]数组,最终在虚拟机上得到的是一个int[]数组。Scala用底层的java.lang.String类表示字符串,不过其通过StringOps类给字符串追加了上百种操作。
"Hello".intersect("Wolrd") //输出"lo"。在这个表达式中,java.lang.String对象"Hello"被隐式地转换成了一个StringOps对象,接着StringOps类的intersect()方法被应用。
(3)BigInt对应于java.math.BigInteger,BigDecimal对应于java.math.BigDecimal。
在Scala中,我们用方法而不是强制类型转换,来做数值类型之间的转换。例如:99.44.toInt得到99,99.toChar得到'C',toString将任意的对象转换为字符串。要将包含数字的字符串转换成数值,使用toInt或者toDouble。例如
(4)a.+(b)。这里的+是方法名。Scala可以用几乎任何方法来为方法命名。
通常可以用a 方法 b《======》a.方法(b)。这里的方法是一个带有两个参数的方法(一个是显式的一个是隐式的)
如1 to 10 <===> 1.to(10)
(5)Scala没有提供++和--操作符,取而代之的是+=1或者-=1。
7.调用函数的方法。
(1)scala.math中定义的函数,sqrt(2),pow(2,4),min(3,Pi),在使用函数的之前,先要引入相应的包。
import scala.math._ //在Scala中,_字符是“通配符”,类似java中的*。
(2)Scala没有静态方法,但是它有个类似的特性,叫做单例对象。通常一个类应该有个伴生对象,其方法和Java的静态方法是一样的。
8.apply方法
(1)如果s是一个字符串,那么s(i)是该字符串中的第i个字符。如下图所示:
(2)def apply(n:Int):Char
也即是:"Hello".apply(4)等价于"Hello"(4)
(3)将字符串转换为BigInt的apply方法,会产生一个新的的BigInt对象,不需要使用new关键字
(4)使用伴生对象的apply方法是Scala创建对象的常用方法。如Array(1,4,9,16)返回一个数组,就是Array伴生对象的apply方法。
Scala新版本学习(1):的更多相关文章
- scala新版本学习(3)
1.REPL:读取->求值->打印->循环.Scala程序将输入的内容快速的编译成为字节码,然后字节码文件交给Java虚拟机进行执行. 2.val是值不可变,var值可变.在变量声明 ...
- Scala新版本学习(2):
1.本章要点; (1)if表达式有值: (2)块也有值,是它最后一个表达式的值 (3)Scala的for循环就像是"增强版的"Java for循环 (4)分号不是必须的 (5)vo ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- Scala学习(一)--Scala基础学习
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...
- Scala 递归学习的例子
为了学习Spark,我开始了学习Scala.加油! 递归的一个题目: 代码: // Why x is Float, but when we use 3.0 for example, it return ...
- scala基础学习(一)
scala学习 scala与java的不同之处: 1.scala中任何一个操作符都是一个方法. s = 1+2; 可以写作:s=(1).+(2) 2.异常捕获采用模式匹配的方式. try { v ...
- Scala系统学习(四):Scala变量
变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变 ...
- Scala系统学习(三):Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- Scala入门学习随笔
推荐学习视频:慕课网http://www.imooc.com/learn/613,讲师:辰风 ScalaAPI:http://www.scala-lang.org/api/current/#packa ...
随机推荐
- C#获取实体类属性名和值
遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User { public string name { get; set; } public st ...
- MIL/SIL/PIL/HIL/VIL
MIL:Model in the loop 模型在环,对模型在模型的开发环境下(如SIMULINK)进行仿真,通过输入一系列的测试用例,验证模型是否满足设计的功能需求.验证控制算法模型是否准确地实现了 ...
- Cortex-M3 R0~R15寄存器组 & 特殊功能寄存器组
[R0~R15寄存器组] Cortex-M3处理器拥有R0~R15的寄存器组,如: [R0~R12通用寄存器]R0~R12都是32位通用寄存器,用于数据操作.其中: R0~R7为低组寄存器,所有的指令 ...
- GitHub-Tech-DotNet:Cnblogs
ylbtech-GitHub-Tech-DotNet:Cnblogs 1.返回顶部 · EnyimMemcachedCore Forked from enyim/EnyimMemcached A Me ...
- 【React自制全家桶】八、React动画以及react-transition-group动画库的使用
React动画通常有三种方法实现从易到难为: 1.transition(CSS3自带) 2.animation(CSS3自带) 3.react-transition-group动画库(需要引入插件) ...
- [Python]切换工作目录|python将目录切换为脚本所在目录
Python使用os.chdir命令切换python工作目录 代码示例: In []: import os In []: os.system("pwd") /home/wangju ...
- MySQL数据表列转行
简单例子 数据结构如下 use dataTest create table t_score ( name ) , subject ), grade ,) ) INSERT INTO `t_score` ...
- linux 基础 yum 安装
ls /dev/cdrom mkdir /mnt/cdrom mount -r /dev/cdrom /mnt/cdrom
- 麦香牛肉(dp 、数论)
麦香牛肉 时间限制: 1 Sec 内存限制: 128 MB 题目描述 农夫约翰的奶牛几乎要武装暴动,因为他们听说麦当劳要推出新产品麦香牛肉.奶牛们要尽力阻止这种产品的上市.他们研究了一种“劣等包装” ...
- [Python]机器学习:Tensorflow实现线性回归
源码 #> tutorial:https://www.cnblogs.com/xianhan/p/9090426.html # 步骤一:构建模型 # 1.TensorFlow 中的线性模型 ## ...