io知识点总结第一篇

来源:互联网 发布:淘宝网佛经早晚课读本 编辑:程序博客网 时间:2024/05/20 12:50

(一)知识点小结:

    1:递归(理解)
        (1)方法定义中调用方法本身的现象。
        (2)递归注意事项:
            A:要有出口,否则就是死递归。
            B:次数不能太多,否则内存溢出。

            特殊事项:构造方法不能递归定义。
(3)案例:(面试可能见到)
       A:递归求阶乘
       B:递归求兔子问题(斐波那契数列)
      C:递归遍历目录(带内容的目录)
      D:递归删除目录(带内容的目录)


2:IO(掌握)
  (1)IO就是在不同设备间传递数据。
  (2)IO流分类:
  A:流向
  输入流 读取数据
   输出流  写出数据
   B:数据类型
  字节流
  字节输入流  InputStream
  字节输出流  OutputStream
  字符流
  字符输入流  Reader
  字符输出流  Writer



注意:
A:四个顶层类都是抽象类。
B:一般每个体系的流都是以基类作为后缀名。
什么时候使用谁?
如果文件能够通过记事本打开并读懂,就用字符流。
其他的全部使用字节流。



3:字节流(掌握)
InputStream
|--FileInputStream
|--BufferedInputStream
OutputStream
|--FileOutputStream
|--BufferedOutputSteam


掌握:(4种方式)
是否使用数组
是否使用高效
把c:\\a.jpg复制到d:\\b.jpg中。



(二)相关代码练习

1.递归的概念

/*
 * 递归:
 * 必须在函数内调用该函数本身
 * Exception in thread "main" java.lang.StackOverflowError
 * 递归方法必须有出口!(即必须指定方法的结束)
 * 递归次数不能过多!
 */
public class Demo01_Recurrence {


static int number;

public static void main(String[] args) {

method();
}

 public static void method() {
     System.out.println("================================================="+number++);
if(number==100) {
   return;
 }
    int thismethodnumber = number;
     method();

    System.out.println("我运行完毕了"+thismethodnumber);
  }
 }

2.递归代码练习;

package cn.itcast;
/*
 * 使用递归计算斐波那契数列
 * 
 * 第1项    第2项    第3项    第4项    第5项    第6项    第7项  ...
 *  1    1    2    3    5    8    13  ...
 *  
 *  规律:
 *   本项的值   =  前一项的值   +  前前一项的值
 *  出口:
 *   当是第1项和第2项时,返回1
 */
public class Test2 {


public static void main(String[] args) {


System.out.println(method(7));
}


//求第N项的斐波那契数列值
public static int method(int number) {

//递归出口
if(number==1||number==2) {
return 1;
}

//递归调用
return method(number-1) + method(number-1-1);

}
}

(三)io的相关练习文件复制的两种方式 --一定要掌握的知识点

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 完成文件复制
 */
public class Demo06_copy {


public static void main(String[] args) throws IOException {
myCopy2();
}


//一次一个字节
public static void myCopy() throws IOException {

//创建流对象
FileInputStream fis = new FileInputStream("a.txt");
FileOutputStream fos = new FileOutputStream("b.txt");
//读入
//定义变量,用来记录本次读取到的字节本身
int b;
while((b=fis.read())!=-1) {
//写出
fos.write(b);
}
//关闭流
fos.close();
fis.close();
}

//一次一个字节数组
public static void myCopy2() throws IOException {

//创建流对象
FileInputStream fis = new FileInputStream("a.txt");
FileOutputStream fos = new FileOutputStream("b.txt");

//读入
//定义变量,用来存储本次读到的数据
byte[] bytes = new byte[1024];
//定义变量,用来记录本次读取到的字节个数
int len;

while((len=fis.read(bytes))!=-1) {
//写出
fos.write(bytes,0,len);
}

//关闭流
fos.close();
fis.close();
}
}

0 0
原创粉丝点击