
Scala
文章平均质量分 93
Z_Data
大学计算机专业老师一枚,高级开发工程师,专注大数据相关技术分享,实战项目开发。
展开
-
Scala基础(一)——常用数据类型
在Scala中,使用val关键字定义一个常量,使用var关键字定义一个变量。1.常量 在程序运行过程中值不会发生变化的量为常量或值,常量通过val关键字定义,常量一旦定义就不可更改,即不能对常量进行重新计算或重新赋值。 定义一个常量的语法格式如下。 val关键字后以依次跟着的是常量名、冒号“:”、数据类型、赋值运算符“=”和初始值。 数组是Scala中常用的一种数据结构,数组是一种存储了相同类型元素的固定大小的顺序集合。Scala定义一个数组的语法格式如下。原创 2023-04-04 16:49:01 · 990 阅读 · 0 评论 -
scala -------- 条件表达式
a、简单if结构if(条件表达式1){方法体}b、if-else选择结构if(条件表达式1){方法体}else{方法体}c、嵌套if-else结构if(条件表达式1){if(条件表达式1){方法体}}d、多重if-else结构if(条件表达式1){方法体}else if(条件表达式2){方法体}注意:1,条件表达式有返回值,不使用return语句,默认最后一个表...原创 2018-11-19 21:03:07 · 353 阅读 · 0 评论 -
Scala --- 块表达式
3.4. 块表达式A、在scala中,{}中可以包含一系列表达式,块中最后一个表达式的值就是块的值块语句,最后一句是赋值语句返回unit,代表没有值,()<=> unit。案例1:案例2:注意:a),块表达式的值是最后一个表达式的值b),最后一句是赋值语句返回unit,代表没有值,()<=> unit。...原创 2018-11-19 21:22:22 · 521 阅读 · 0 评论 -
Scala ---- while循环、for循环、增强for循环、嵌套for循环
3.5. 循环A)、while (条件语句){代码块}B)、do{代码块}while(条件语句) C)、for循环语法结构:for (i <- 表达式/数组/集合)1、简单for循环 注意:to和until的区别,to包括边界数据,until不包括右边界数据2、增强for循环3、嵌套for循环案例1:案例2...原创 2018-11-19 21:53:04 · 2631 阅读 · 0 评论 -
Scala函数学习
1、 Scala函数. 定义函数(多种)1,函数的定义方式(左参数类型参数名,右参数名运算方法):val f2 = (a: Int, b: Int) => {a + b}2,函数的定义方式(左参数类型,右参数名运算方法):val f1:((Int,Int)=>Int)={(x,y)=>x+y}3,函数的定义方式:val f1 = new Func...原创 2018-11-19 21:56:25 · 263 阅读 · 0 评论 -
Scala高阶函数
概念:如果一个函数的传入参数为函数或者返回值是函数,则该函数即为高阶函数。3.7.1. 匿名函数的定义和案例1、匿名函数定义:(x: Int) => x + 1匿名函数说明(一般作为参数值传递): 3.7.2. 函数作为参数[1] 第一步:定义带函数类型参数的函数f2第二步:定义函数f3(一般定义匿名函数),作为f2的参数值第三步:调用f2,将...原创 2018-11-20 09:16:38 · 254 阅读 · 0 评论 -
Scala基础
关于对象的知识扩充单例对象(重点)单例对象:全局只有一个对象实例。java中创建单例对象是通过设计一个单例模式的类,在通过该类获取单例对象。Scala中没有static关键字,通过object修饰类名后,直接就是一个单例对象,伴生对象(重点)A、伴生对象的写法定义:与类同一个源文件中,与类同名并且用object修饰的对象叫做伴生对象,B、伴生对象的作用a)、类和...原创 2018-11-22 21:25:35 · 229 阅读 · 0 评论 -
Scala ------ 模式匹配和样例类(重点)
6.1.样例类多用于匹配模式,样例类的编写方式://样例类case class LogWeb(a:Int,b:String){}1、参数列表默认都是val修饰。除非你显示声明为var2、样例类在使用过程中,会自动创建对象。(用于匹配模式)3、样例类默认实现Seri序列化接口。6.2.模式匹配匹配模式就是更高级的Switch语句。用于匹配各个分支,匹配成功,就会执行分...原创 2018-11-22 21:37:47 · 284 阅读 · 0 评论 -
Scala ------- 文件读写
7.1 读取行(Source.fromFile getLines)//以行形式读文件val source: BufferedSource = Source.fromFile("D://shuju/a.txt")//获取文件中的行val strings: Iterator[String] = source.getLines()//迭代出数据strings.foreach((x)=&g...原创 2018-11-22 21:38:45 · 547 阅读 · 0 评论 -
Scala ------- 并发编程(1)
1.并发编程名词解释(重点)并行:多个处理器或者是多核的处理器同时处理多个不同的任务并发:一个处理器同时处理多个任务 同步:某段时间只有一个线程执行一个任务异步:某段时间多个线程执行一个任务 并发编程:是指编写多个任务,在一台处理器上“同时”处理。并发编程目的:目标是充分的利用处理器的每一个核,以达到最高的处理性能...原创 2018-11-22 21:40:31 · 234 阅读 · 0 评论 -
scala学习 --------java实现并发编程(理解)
2.1 java中实现线程方式(2种)使用继承Thread类或者实现Runable接口来编写线程,效率很低。没有办法实现对线程有效的管理,造成资源浪费。2.2 java并发编程Executors接口2.2.1. Java通过Executors接口提供四种线程池newFixedThreadPool (execute)创建一个定长的线程池。//固定长度线程池public...原创 2018-11-22 21:43:07 · 287 阅读 · 0 评论 -
Scala并发编程Demo(扩展Actor)
package com.zzk1import scala.actors.Actor//Atl+Enter导包//Ctrl+i 实现抽象方法class ActorDemo extends Actor{ //接受消息的方法 override def act(): Unit = { //处理方式,匹配模式。匹配消息,消息匹配成功,执行该分支的代码 receive{...原创 2018-11-26 08:55:04 · 338 阅读 · 0 评论 -
Scala学习 -------- Actor实战
第一个例子(while-receive不断地接收消息)package com.zzk1import scala.actors.{Actor, Future}//Atl+Enter导包//Ctrl+i 实现抽象方法class ActorDemo extends Actor{ //接受消息的方法 override def act(): Unit = { ...原创 2018-11-26 08:57:51 · 351 阅读 · 0 评论 -
Scala语法讲解及练习
Scala基础语法1、 值和变量A)、声明变量:var修饰的字段,是变量,内容和引用都可变B)、声明常量:val修饰的字段,是常量,内容可变引用不可变val修饰的字段,相当于Java中final修饰的变量注意:在val和var均可的条件下,官方推荐使用val、var和var区别演示进入scala操作界面演示var修饰的变量特点:var修饰字段引用可变...原创 2018-11-19 20:50:20 · 472 阅读 · 0 评论 -
Scala环境安装,JDK安装、编写HelloScala程序
因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK Scala安装,编写HelloScala程序1、 系统环境安装第一步:下载Scala地址https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz然后解压Scala到指定目录(/bigdata)tar -zxvf scala-2.10....原创 2018-11-19 19:50:32 · 1986 阅读 · 0 评论 -
大数据学习 ------ Scala入门
1.1 为什么要学Scala语言[1] 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。Martin OrderSke (scala发人)Epel瑞士科技大学 Javac是Matin编写的 让程序员高效简洁优雅开发软件 SCALA比 Ruby Gtoovy高效 Spark是又Scala编写2.速度快:Scala语言表达能...原创 2018-11-19 19:22:50 · 334 阅读 · 0 评论 -
Scala学习 --------- 映射(map)<2>
一个经典的程序员名言是:“如果只能有一种数据结构,那就用哈希表吧。”,或者更笼统的说,映射--是最灵活多变的数据结构之一。 映射:就是键值对的集合 Scala提供两种类型的映射:一类是值可以改变的映射,位于scala.collection.immutable.Map包,另一类是值不可以改变的映射,位于scala.collection.mutable.Map包。4.2.1. 构建...原创 2018-11-20 21:31:11 · 332 阅读 · 0 评论 -
Scala学习 --------- 元组(Tuple)<3>
映射:映射是K/V对的集合。元组:K/V对是元组的最简单形式,元组可以装着多个不同类型的值,是不同类型的值的聚集。4.3.1. 创建访问元组a、创建元素的一种方式b、创建元组的第二种方式目前 Scala 支持的元组最大长度为 22。对于更大长度你可以使用集合,或者扩展元组4.3.2. 创建访问元组a、元组的取值方式访问组元:使用_1, _2, _3等访问组元...原创 2018-11-20 21:32:37 · 428 阅读 · 0 评论 -
Scala学习 --------- 列表(List)<4>
List集合:可以存放重复的数据4.4.1. 不可变List集合a、不可变的序列包 import scala.collection.immutable._b、 :: 连接符的使用在Scala中列表:要么为空(Nil表示空列表),要么是一个head元素加上一个tail列表 案例1 9 :: List(5, 2) :: 操作符是将给定的头和尾创建一个新的列...原创 2018-11-20 21:33:53 · 310 阅读 · 0 评论 -
Scala学习 --------- 集合(Set)<5>
Set集合:不重复元素的集合4.5.1. 可变Set集合创建可变集合向Set集合中追加元素+= 追加元素add方法追加元素++= 追加一个Set集合向Set集合删除元素-= 删除一个元素remove方法删除一个元素4.5.2. 不可变Set集合a、创建不可变集合b、在集合添加元素+ 在集合中添加元素++在集合中添加集...原创 2018-11-20 21:35:27 · 305 阅读 · 0 评论 -
Scala学习 --------- Scala中集合体系总结
A、集合体系总结a、集合是一种用来存储各种对象和数据的容器b、Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。B、集合体系图 ...原创 2018-11-20 21:37:21 · 309 阅读 · 0 评论 -
Scala学习 --------- Iterable常用方法
因为Iterable是所有集合的父类,所以其方法在所有集合中都适用 4.6.1 sum/max/min/countsum/max/mincount统计偶数的个数4.6.2 filter过滤4.6.3 flatten 扁平化处理扁平化处理:集合中的元素如果是多个集合,则将多个集合拆解成一个集合。案例:4.6.4 diff/int...原创 2018-11-20 21:47:02 · 3509 阅读 · 0 评论 -
IDEA安装scala插件
由于本人一直使用IDEA开发Java项目,目前scala也可以使用IDEA开发,下载地址:http://www.jetbrains.com/idea/ Community Edition FREE 和 Ultimate Edition Free 30-day trial都支撑scala开发,我使用的Ultimate...转载 2018-11-19 11:44:23 · 404 阅读 · 2 评论 -
Scala --------- 定义类和对象
*定义类和属性方法**/** * 定义类,默认是public修饰 */class Person { //姓名 var name:String ="zhangsan" var age=12 //方法 def study()={ print("正在学习") }}属性定义详解解释(重点)a 定义属性使用var修饰时候,scala就会给你创建一个g...原创 2018-11-21 22:01:05 · 1680 阅读 · 0 评论 -
Scala学习 --------- 抽象类型、特质
抽象类定义概念:如果你在类中定义了抽象字段或抽象方法,那就一定是抽象类abstract class Animal { //抽象字段 var name:String //抽象方法 def eat()}注意:1、抽象类中既可以又抽象成员又可以又普通成员2、子类必须实现特质的抽象成员特质定义trait Person {}理解:1、类似接口...原创 2018-11-22 08:57:32 · 241 阅读 · 0 评论 -
Scala学习 --------- 隐式转换(难点)
隐式转换:如果你希望对某个类进行扩展,就可使用隐式转换语法,进行扩展。隐式转换案例:案例1:implicit class MyRichInt(x:Int){ //对Int进行扩展的一个方法 def add(a:Int,b:Int)={ a+b+x }}def main(args: Array[String]): Unit = { //调用自己扩展的方法 ...原创 2018-11-22 08:59:35 · 332 阅读 · 2 评论 -
Scala学习 ----- 泛型(上界、下界、视图界定)(难点)
概念:约束数据的泛型[T] //约束数组中的元素val arry=new Array[Int](2)class CompareObject[T](per1:T,per2:T) {上界[A<:B]:A必须是B的子类,才能满足泛型的要求案例:比较两个对象的大小 package com.zzk4class Person(var name:String,v...原创 2018-11-22 10:55:15 · 597 阅读 · 0 评论 -
Scala学习 ----- 其他知识扩充
单例java:单例模式,创建一个全局唯一的实例,本质staticscala单例对象:使用object修饰的对象,就是单例对象。解释:object修饰的对象,里面的方法和属性默认都是static修饰的。单例对象。伴生对象:经常使用object修饰的对象,作为类的伴生对象。与类同名/** * 普通类 */class Student {}/** * 伴生对象 *...原创 2018-11-22 11:52:40 · 237 阅读 · 0 评论 -
Scala学习 --------- 数组(Array)<1>
定长数组定长数组:长度不变的数组,使用scala包中的Array类定义:操作:a、打印定长数组,内容为数组的 [I@246df37b (hashcode值)b、将数组转换成缓冲数组,就可以看到原数组中的内容了,toBuffer将数组转成缓冲数组c、创建数组,给数组赋值d、修改数组中的值4.1.2. 变长数组A、定义:长度可以...原创 2018-11-20 21:29:46 · 401 阅读 · 0 评论