IO流的前置知识

一入Java情几许?大家好,我是深山夕照深秋雨。

本文旨在介绍学习IO的前置知识,更详细的学习内容请继续研究站内大佬的文章。文章内容纯属个人观点,如有错误,欢迎指正。

零、

在我们的电脑中,存储数据的方案有变量、数组、对象、集合等。而它们都是内存中的数据容器,它们记住的数据在断电或程序终止时会丢失。如果想把数据长久保存起来,文件就是非常重要的存储方式,在计算机硬盘中。 即便断电,或者程序终止了,存储在硬盘文件中的数据也不会丢失。

File是java.io.包下的类, File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。

IO流用于读写数据(可以读写文件,或网络中的数据…)

总结:File代表文件,IO流用于读写数据。

接下来介绍几个知识点:

一、递归

递归是一种算法,在程序设计语言中广泛应用。 从形式上说:方法调用自身的形式称为方法递归( recursion)。

递归有两种形式。直接递归:方法自己调用自己; 间接递归:方法调用其他方法,其他方法又回调方法自己。

递归要控制好终止,否则会出现递归死循环,导致栈内存溢出错误。

递归的三要素:递归的公式; 递归的终结点;递归的方向必须走向终结点。

举个最简单的栗子:

用递归实现n的阶乘。

public class RecursionTest2 {
    public static void main(String[] args) {
        int result = f(5);
        System.out.println("5的阶乘是:"+ result);
    }
    public static int f(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * f(n - 1);
        }
    }
}

递归的公式: f(n) =  f(n-1) * n;

递归的终结点:f(1)

递归的方向必须走向终结点:

f(5) =  f(4) * 5

f(4) =  f(3) * 4

f(3) =  f(2) * 3

f(2) =  f(1) * 2

f(1) =  1

根据三要素编写代码,多加训练,就能写出合适的递归代码。

二、字符集

标准ASCII字符集:ASCII(American Standard Code for Information Interchange): 美国信息交换标准代码,包括了英文、符号等。标准ASCII使用1个字节存储一个字符,首尾是0,总共可表示128个字符,对美国佬来说完全够用。

GBK(汉字内码扩展规范,国标):汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。 注意:GBK兼容了ASCII字符集。

Unicode字符集(统一码,也叫万国码):Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。                                                                                                                           UTF-32:四个字节表示一个字符。缺点:占用存储空间大,通信效率变低。                                   UTF-8:是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节 英文字符、数字等只占1个字节(兼容标准ASCII编码),汉字字符占用3个字节。(技术人员在开发时都应该使用UTF-8编码)

总结:

ASCII字符集:只有英文、数字、符号等,占1个字节。

GBK字符集:汉字占2个字节,英文、数字占1个字节。

UTF-8字符集:汉字占3个字节,英文、数字占1个字节。

注意:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

编码:把字符按照指定字符集编码成字节                                                                                        解码:把字节按照指定字符集解码成字符

最后,放几张IO流体系的思维导图,大家可以按照这个查漏补缺。IO流的学习不用死记硬背,什么时候用到看两眼就行了,用的多自然就会了(要是用的少你管它干嘛)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值