一 ,文件操作:

1,读取行:val source=Source.fromFile("fileName","utf-8)  形成一个字符串:source.mkString   从网络中读取:val source=Source.fromURL("http://www.baidu.com","utf-8")

2,读取二进制文件,写入文本文件,访问目录都需要引入java.文件处理方法

3,序列化:需要序列化的场景:由于序列化的使用会影响系统的性能,因此如果能不使用就尽量不要使用。(class extends Serializable)

  • 需要通过网络来发送对象,或将对象的状态需要被持久化保存到数据库或文件中

4,反序列化:将流转为对象

import collection.mutable.ArrayBuffer
import java.io.{ObjectInputStream,ObjectOutputStream,FileInputStream,FileOutputStream}
class Person(var name:String) extends Serializable{
val friends=new ArrayBuffer[Person]()
def addFirend(p:Person):ArrayBuffer[Person]={
friends += p
}
override def toString()={
var str="My name:"+name+"and my firends name is"
friends.foreach(str +=_.name+",")
str
}
}
object seriTest extends App{
val p=new Person("1")
val f1=new Person("2")
val f2=new Person("3")
p.addFirend(f1)
p.addFirend(f2)
print(p)
val out=new ObjectOutputStream(new FileOutputStream("test.txt"))
out.writeObject(p)
out.close()
val in =new ObjectInputStream(new FileInputStream("test.txt"))
val p1=in.readObject.asInstanceOf[Person]
println(p)
}

输入流与输出流:

InputStream(字节输入流)和Reader(字符输入流)通俗的理解都是读(read)的。

OutputStream(字节输出流)和Writer(字符输出流)通俗的理解都是写(writer)的。

在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了

流总结

5,正则表达式

https://deerchao.net/tutorials/regex/regex.htm#getstarted

几个正则表达式应用题:

//9.6
import scala.io.Source
object regexTest extends App{
val path="/home/hadoop/people.txt"
val file=Source.fromFile(path)
val pattern="\\w+\\s+\"".r
pattern.findAllIn(file).foreach(println(_))
}
//9.7 非浮点数
object regexTest2 extends App{
val path="/home/hadoop/people.txt"
val file=Source.fromFile(path)
val pattern="""[^((\d+.)?\d+)^\s+] """.r//非浮点数非空格
pattern.findAllIn(file).foreach(println(_))
}
//9.8 寻找 < img src="">
object regexTest3 extends App{
val path="http://www.hao123.com"
val file=Source.fromURL(path).mkString
val pattern="""<img[^>]+(src\s*=\s*"[^>^"]+")[^>]*>""".r
for (str <- pattern.findAllIn(file)) println(str)
}

6,特质

  Java:类只能扩展一个超类,它可以实现任意数量的接口,但接口只能有抽象方法,不能包含字段

  为什么接口中的常量必须使用public static final修饰    

  public: 使接口的实现类可以使用这个常量

  static:static修饰就表示它属于类的,随的类的加载而存在的,如果是非static的话,
          就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以
       接口的常量必须定义为static
  final:final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,
        由子类随意去修改的话,接口建立这个常量就没有意义了。

  特质,不支持多重继承,因为多重继承会产生菱形继承问题,可以理解为一种缺少构造器参数的类,拥有具体或抽象的字段和方法,或超类

Scala快学笔记(三)的更多相关文章

  1. Scala快学笔记(二)

    一,基本概念 1,映射 Map与HashMap与TreeMap,SotredMap等区别: 1.HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度 ...

  2. Scala快学笔记(一)

    一,基本概念: 1,Scala是一种基于JVM的面向对象和函数式编程语言 2,基本类型:数值类型 ->:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean ...

  3. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  4. [Scala] 快学Scala A1L1

    基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时 ...

  5. [Scala] 快学Scala A3L3

    Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19. ...

  6. [Scala] 快学Scala A2L2

    集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快 ...

  7. 快学Scala-第三章 数组相关操作

    知识点: 1.定长数组 Array val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) / ...

  8. Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、

    1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...

  9. 快学Scala习题解答—第一章 基础

    1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on th ...

随机推荐

  1. Linux-进程间通信(二): FIFO

    1. FIFO: FIFO也被成为命名管道,因其通过路径关系绑定,可以用于任意进程间通信,而普通无名管道只能用于有共同祖先的进行直接通信; 命名管道也是半双工的,open管道的时候不要以读写方式打开, ...

  2. Linux设置编译器环境变量

    Linux设置编译器环境变量 https://jingyan.baidu.com/article/9f7e7ec0bb22aa6f29155453.html Linux添加环境变量与GCC编译器添加I ...

  3. linux tomcat 乱码

    使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容. 这时,使用查找功能尤为重要. 方法如下: 1.命令模式下输入“/字符串”,例如“/Section 3”. 2.如果查找下一个,按“ ...

  4. BZOJ 3038 上帝造题的七分钟二

    无题目 但是百度会发现题目和3211基本一致 所以看上一篇博文的上一篇博文呢

  5. ttk.Treeview

    TTK的目的. TreeView控件的呈现层次结构,用户可以使用鼠标动作来显示或隐藏结构的任何部分. 与术语“树”的关联是由于编程实践:树结构是一个常见的程序设计.严格地说,在一个TreeView控件 ...

  6. MATLAB作图方法与技巧(二)

    作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...

  7. python3生成测试数据,并写入ssdb

    import pyssdb import random import time c = pyssdb.Client() chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoP ...

  8. 记一次Laravel定时任务导致日志没有写入权限的坑

    问题:用laravel开发定时任务时,发生了日志没有写入权限导致项目打不开的问题 原因:linux的添加定时任务时默认是当前登录用户,我定时任务会生成日志 crontab: kernel: 生成日志的 ...

  9. UVA Rails(stl-stack)

    具体思路是从B方向的序列 倒推 栈C 的入栈出栈顺序,  以B方向的5,4,3,2,1为例子:从一个数字5开始,要想从栈C拿到5号车厢,5号车厢得入栈C,且5号车厢处于栈顶位置,为了保证5号车  厢在 ...

  10. HDU 4528 小明系列故事――捉迷藏

    广搜. 根据题意,可以知道状态总共有$4*n*m$种.每一个位置四种状态:两个都没有发现:发现$E$没发现$D$:发现$D$没发现$E$:两个都发现. 每次移动的花费都是$1$,队列里面状态的费用是单 ...