java 内存操作流主要有两个类ByteArrayOutputStream和 ByteArrayInputStream。
/*
在内存中进行操作输入输出流,由此引发对多态的理解。
*/
import java.io.* ;
public class ByteArrayDemo01{
public static void main(String args[]) throws Exception{
String str="AFASDFASFSADFAS";
ByteArrayInputStream bis = null; //输入流
ByteArrayOutputStream bos = null; //输出流
bis = new ByteArrayInputStream(str.getBytes());
bos = new ByteArrayOutputStream();
int temp=0;
while((temp=bis.read())!=-1){
bos.write(Character.toLowerCase(temp));
}
bis.close();
bos.close();
System.out.println(bos.toString());
/*
char c='a';
int i=c;
System.out.println(i);
*/
}
};
对多态的理解:
java.lang.Object
java.io.InputStream
java.io.ByteArrayInputStream
可以看出
ByteArrayInputStream是InputStraem的子类,同一个父类下不同子类产生不同的操作,就是多态。上述代码可以换成这样:父类声明,new的时候new你想要的子类。
/*
在内存中进行操作输入输出流,由此引发对多态的理解。
*/
import java.io.* ;
public class ByteArrayDemo02{
public static void main(String args[]) throws Exception{
String str="AFASDFASFSADFAS";
<span style="color:#ff0000;">InputStream </span>bis = null; //输入流
<span style="color:#ff6666;">OutputStream</span> bos = null; //输出流
bis = new ByteArrayInputStream(str.getBytes());
bos = new ByteArrayOutputStream();
int temp=0;
while((temp=bis.read())!=-1){
bos.write(Character.toLowerCase(temp));
}
bis.close();
bos.close();
System.out.println(bos.toString());
/*
char c='a';
int i=c;
System.out.println(i);
*/
}
};
如下面另一个InputStream的子类的操作:
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
/*
问题:文件虽然读出来了,但是存在很多的空行,就是因为我们申请了1024的数组,但是
实际的数据量没有那么大。解决看下一个。
*/
public class InputStreamDemo01{
public static void main(String[] args)throws Exception{
//第一步通过File类找到一个文件,如果文件不存在,自动创建
File f = new File("d:"+File.separator+"test.txt");
//第二部通过子类实例化父类对象,IutputStream是FileIutputStream的父类
<span style="color:#ff0000;">InputStream input = null;
input = new FileInputStream(f);</span>
//第三部进行读写操作
byte b[] = new byte[1024]; //所有内容都读取到这个数组中
input.read(b);
//关闭输入输出流
input.close();
//把byte数组变成字符串输出
String str = new String(b);
System.out.println("内容:"+str);
}
}
完成了同一父类不同子类的操作。
最后补充: 在java中有三个类负责对字符的操作:Character、String、StringBuffer。其中,Character类是对单个字符进行操作,String是对一个字符序列的操作,StringBuffer是对一串字符进行操作。Character.toLowerCase(temp);是为了把temp代表的值转化成小写字母。