java加强知识总结 java面试 java学习节点(2)

java加强    接续上一节java基础      不足大家请指出(谢谢)

1.Object类

      1).Object类是所有类的父类,位于java.lang包中。

      2).数组也是Object类的子类。

     方法:

           toString()equals()hashCode()等方法

2.异常

      各位朋友不管在自己写代码,还是在敲项目的时候我们总会遇到不同的异常,今天我给大家介绍一下常见的异常不足希望大家指出。

  异常指:程序在执行过程中,出现非正常情况,jvm非正常停止。

                在java语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出一个异常对象。java处理异常的方式是中断处理。

异常体系

       异常的根类是java.lang.Throwable,两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception

  • Error: 严重错误Error,无法通过处理的错误,只能实现避免,好比绝症。
  • Exception: 表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。

2种处理异常的方法

    1)抛

          


import java.io.*;
public class className
{
  public void deposit(double amount) throws RemoteException
  {
    // Method implementation
    throw new RemoteException();
  }
  //Remainder of class definition
}

   2)try--catch

   

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

  3)finally关键字

  

finally 关键字用来创建在 try 代码块后面执行的代码块。

无论是否发生异常,finally 代码块中的代码总会被执行。

在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。

finally 代码块出现在 catch 代码块最后,语法如下:
try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}

  常见异常:

    算术异常类:ArithmeticExecption

    空指针异常类:NullPointerException

    类型强制转换异常:ClassCastException

    数组负下标异常:NegativeArrayException

    数组下标越界异常:ArrayIndexOutOfBoundsException

    违背安全原则异常:SecturityException

    文件已结束异常:EOFException

    文件未找到异常:FileNotFoundException

    字符串转换为数字异常:NumberFormatException

     等等等。。。

    建议大家在项目报异常的时候希望各位不要抵制它,程序员就是改bug写bug,写bug改bug。

    1)大家遇到问题耐心查找问题解决问题。

    2)采用debug方式System方式这样找问题速度成倍提高

 3.io流

   概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

   流的分类:

        根据处理数据类型分为:字节流和字符流

        根据数据流向分为:输入流和输出流

  字节流和字符流

       字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字节流和字符流的区别:

     (1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

     (2)处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

     (3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件,我们将在下面验证这一点。

        结论:优先选用字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

   java流类图结构

     

 在企业项目中使用的流大多为字节流,字节流的使用范围广泛基本可以处理99%读写的操作。 

  字节输出流:OutPutStream

      是表示字节输出流的所有类的父类,将指定的字节信息写出到目的地。

      public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
      public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
      public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。
      public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
      public abstract void write(int b) :将指定的字节输出流。

文件输出流,将数据写出到文件   FileOutputStream

  构造方法:
      public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。
      public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件。
  写出字节数据
  写字节 write(int b) 方法,每次可以写出一个字节数据
  写出字节数组: write(byte[] b) ,每次可以写出数组中的数据
  写出指定长度字节数组: write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节
  数据的追加续写
     public FileOutputStream(File file, boolean append) : 创建文件输出流以写入由指定的 File对象表示的文件
     public FileOutputStream(String name, boolean append) : 创建文件输出流以指定的名称写入文件
  换行 fos.write("\r\n".getBytes());

字节输入流 InputStream
     是表示字节输入流的所有类的父类,可以读取字节信息到内存

     public void close() :关闭此输入流并释放与此流相关联的任何系统资源
     public abstract int read() : 从输入流读取数据的下一个字节。
     public int read(byte[] b) : 从输入流中读取一些字节数,并将它们存储到字节数组 b中


文件输入流,从文件中读取字节  FileInputStream

  构造方法
     FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
     FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
  读取字节数据
     读取字节: read 方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回 -1
     使用字节数组读取: read(byte[] b) ,每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回 -1
     使用数组读取,每次读取多个字节,减少了系统间的IO操作次数,从而提高了读写的效率,建议开发中使用。
 

 

   文章地址https://blog.csdn.net/wjl31802/article/details/87975514#day08File_95

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章