一、数据流
知识点1:
字节流通过数据流优化就可以输入boolean,int,String这种进入文件了。
File f = new File("d:/lol.txt");
try(
FileOutputStream fos = new FileOutputStream(f);
DataOutputStream dos = new DataOutputStream(fos);
){
dos.writeBoolean(true);
dos.writeInt(300);
dos.writeUTF("UTF是可以写String的意思,数据流配合字符");
读取在文件里只有字符串是显示正常的:
File f = new File("d:/lol.txt");
try(FileInputStream fos = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fos);)
{
boolean b = dis.readBoolean();
int i= dis.readInt();
String str = dis.readUTF();
System.out.println("读取到的布尔值"+b);
System.out.println("读取到的数字"+i);
System.out.println("读取到的字符串"+str);
知识点2:
一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口
知识点3:
把你在控制台输入的值传到字节流中,然后读取
try(InputStream is = System.in)
{
while(true)
{
int i = is.read();//is.read()已经把你输入的a转化为了ASCII码了
System.out.println(i);
}
}catch(Exception e)
{
e.printStackTrace();
}
二、集合框架
知识点1:
数组的局限性,Hero heros[] = new
Hero[
10
];//声明长度是10的数组//不用的数组就浪费了,超过10个就没办法放下这么多。
import
java.util.ArrayList;是最常见的容器,会随着对象增加而增加
ArrayList heros = new ArrayList();
heros.add(new Hero("奈斯"));
System.out.println(heros.size());//读取是1
知识点2:
ArrayList的相关方法:
// 在指定位置增加对象
Hero specialHero = new Hero("special hero");
heros.add(3, specialHero);
//判断是否为同一个对象,不是看name
heros.contains(new Hero("hero 1"))
//获取指定位置的对象,不能超出范围
heros.get(5)
//判断所处位置
heros.indexOf(specialHero)//如果超出会返回-1
//删除
heros.remove(2);//其中或者是直接指定对象名删除
//替换新对象
heros.set(5, new Hero("hero 5"));
//获取大小
heros.size()
//转化为数组
Hero hs[] = (Hero[])heros.toArray(new Hero[]{});
//把另外一个容器里的所有对象加入到里面
heros.addAll(anotherHeros);
//清空
heros.clear();