scala语言学习01

scala语言学习

编程范式:命令式编程(c++,java,c),函数式编程

命令式编程:冯诺伊曼体系

函数式编程:图灵计算。lamada计算

数据计算量大,实时性要求高,cpu计算能力不断提升

函数式编程:发挥多核cpu多线程并发能力,变量不可更改

命令式编程:多线程之间的状态共享,锁机制进行并发控制

简介

类似java的范式语言

martin odersky开发

面向对象,函数式编程两个风格

运行在java虚拟机上,兼容java

并发行号,轻量级函数(lamada表达式)

容器与序列

特质(Trait):没有被实现

foreach方法 容器遍历,列表继承容器

seq按0,1,2索引,map按键索引,set无序

序列容器从seq继承(LinearSeq,IndexedSeq)

LinearSeq:取头尾。。派生列表和队列

IndexedSeq:无序。。派生vector,ArrayBuffer

输入输出

在这里插入图片描述

在这里插入图片描述

控制结构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

数组

在这里插入图片描述

在这里插入图片描述

元祖

在这里插入图片描述

列表

具体容器类

共享相同类型的不可变的对象序列

列表的值不可变

定义在包scala.collection.immutable下

初始化时就要复制

var slist=List(“a”,“b”)

挂结列表:var strlist=“s”::slist

在这里插入图片描述

向量

在这里插入图片描述

range

在这里插入图片描述

集合

哈希方法

可变集,不可变集

不可变集+可变变量

可变变量指向不可变集

在这里插入图片描述

可变集+不可变变量

导入scala.collection.immutable.Set

没有改变变量本身,改变指针指向。。。。我尝试的时候不可以

在这里插入图片描述

映射

默认不可变

可变:scala.collection.mutable

不可变:scala.collection.immutable

先调用contains方法,确定键是否存在

在这里插入图片描述