数组和IO流
2021-03-20 16:05:51 7 举报
AI智能生成
数组和IO流
作者其他创作
大纲/内容
数组的特点
数组的长度在程序运行期间不可改变
数组当中的多个数据,数据的类型必须一致
数组是一种引用数据类型
数组的初始化方式
动态初始化(指定长度)
动态初始化数组的格式:数据类型【】 数组名称 = new 数据类型【数据长度】
数组的【】里面只能输入长度值,要输入具体的数据,只能用{},里面用,隔开
= 两边的数量类型要一直
静态初始化(指定内容),指定的内容放{}里面用,隔开
静态初始化除了用new这种创建的方式,还有一种省略的方式:就是在=右边的{}里面直接输入数据类型就可以了
静态初始化个省略格式不支持拆分格式
静态里面参数也可以是变量
不确定数据的内容,创建动态初始化,如果知道了数组的数据类型就建议使用静态初始化
数组的打印输出方法
直接打印数组,得到的就是数组对应的内存地址哈希值
为什么是地址哈希值了,因为输出默认调用了Object的toString方法
默认值
使用动态初始化的时候,如果没有赋予数据,那么输出的值就是该数据类型的默认值,例如,int的默认值是0,而string的默认值是‘\u0000‘。
其实静态初始化也是有默认值,不过马上被{}里面的数据覆盖了默认值
Java的内存需要划分5个部分
栈(Stack)
存放的都是方法中的局部变量
局部变量:方向的参数,或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存当中消失
方法的运行一定要在栈当中
堆(Heap)
凡是new出来的东西,都是在堆当中
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值。例如,整数,默认的是0.浮点数默认的是0.0
方法区(Method Area)
储存class相关信息,包含方法的信息。
本地方法栈(Native Method Stack)
与操作系统相关
寄存器
与cpu相关
两种常见问题
如果数组索引越界
会引起异常
空指针
数组长度在程序运行时 是不能改变的
任何数据类型都能做为方法的参数
当调用方法的时候,传递进去的其实是数组的地址值
方法只能返回一个值。但是利用数组就可以有多个,但是数组返回的是地址值,接收的也是地址值。打印的时候需要带索引角标
IO流
IO字节流
输入流(InputSteam)是超类,通过不同的子类来借用超类的方法
FileInputStream文件输入流
读取数据的原来:硬盘--内存(java程序---jvm--os--os读取数据的方法-读取文件)
创建FileInputStream对象,构造方法中绑定要读取的数据源
使用FileInputStream对象中的read方法,读取文件
read()读取文件中的一个字节并返回,读取到文件的末尾返回-1。由于read()方法每次都是读取一个字节,为了一次读取完成,使用循环语句,末尾的返回值是-1,就用while循环来实现。(len=对象.read())!=-1。(里面有三种意思:read()先读取,再把读取的字赋值给len,最后再判断是否等于-1)
释放文件
输出流(OutputStream)是超类,通过不同的子类来借用超类的方法
输出的意思就是将东西write写入文件中,也就是把东西方到硬盘中
写入的东西 会把10进制的转换称二进制在硬盘上
任意的文本编辑器,在打开文件的时候,都会查询编码表,把字节转换为字符表示(例如0-127:查询ASCII表,其他值:查询系统默认编码表(中文系统就是GBK))
如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表,如果第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)
怎么让数据追加写:使用两个参数的构造方法就可以了FileOutputStream(String name,boolean oppend)boolean oppend:追加写开关,true就会创建对象不会覆盖文件,继续在文件末尾追加数据。相反就会覆盖源文件
写入字符的方法:可以使用String类中的方法把字符串,转换为字节数组byte[] getBytes() 把字符串转换为字节数组
怎么写换行:不同的系统换行的符号不一样(windows:\r\n。Linux:/n。mac:/r。)对象.write("\r\n".getBytes())
IO字符流
输入流(Reader)
也是一个抽象类
其实也就是一个用于读取字符的便捷类
fileReader:文件字符输入流
输出流(Writer)
也是一个抽象类
flush():刷新缓冲区,流对象可以继续使用
close():先刷新缓存区,然后通知系统释放资源,流对象不可以再被使用了
输出缓存数组用char[],因为是字符,不是字节了
知识点
一切皆字节,一切都是以字节的形式储存的
抽象类无法创建对象,通过子类来借用方法
写入数据的原理(内存--硬盘)(java程序-JVM虚拟机-os操作系统-os调用写数据的方法--把数据写入到文件中)
研究一个类首先就要研究它的构造方法
文件的复制:一读一写
先关闭写的,在关闭读取的
try catch finally
try{可能会产生异常的代码}
catch(异常类变量 变量名){异常的处理逻辑}
finally{一定会指定的代码 资源释放}
如果流已经关闭了 , 要再次利用流对象 ,就要重新创建流对象
一个字符等于两个字节,一个字节等于8个二进制(比特位)
数据的输入和输出
输入就是把硬盘中的数据,读取到内存中使用
输出就是把内存中的数据写入到硬盘中保存
0 条评论
下一页