zoukankan      html  css  js  c++  java
  • Scala快学笔记(三)

    一 ,文件操作:

    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[^>]+(srcs*=s*"[^>^"]+")[^>]*>""".r
        for (str <- pattern.findAllIn(file)) println(str)
    }

     6,特质

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

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

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

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

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

  • 相关阅读:
    SQLServer性能杀手
    SqlServer内存瓶颈分析SQLServer:Buffer Manager
    HTML5变化 (一)
    对于using嵌套的改进
    String.IsNullOrEmpty()和String.IsNullOrWhiteSpace()
    querySelector & querySelectorAll
    Action<T> 委托
    Func<T, TResult>
    SL4.背景图片拖动
    JavaScript日志
  • 原文地址:https://www.cnblogs.com/ksWorld/p/7147711.html
Copyright © 2011-2022 走看看