java I/O 流

hzc543806053 2011-09-12 10:39:08
class IO_1 {
public static void main(String args[])throws
java.io.IOException{
byte buffer[] = new byte[40]; // 1 怎么理解啊??
System.out.println("输入一个字符,回车键结束。");
int count = System.in.read(buffer);
System.out.println("保存在缓冲区的个数:"+count); // 2 为什么我输入的值 和 保存在缓冲区的个数不同哦??
System.out.println("输出 buffer元素值");
for(int i=0 ; i<count ; i++ )
{
System.out.println(""+buffer[i]); //buffer[i] 3 输出的是什么值啊? 怎么产生的值?
}
System.out.println();
System.out.println("输出buffer 字符元素");
System.out.write(buffer,0,buffer.length); // 4 怎么理解啊(这三个 buffer,0,buffer.length )??

}

}



请大牛们解释下这代码。谢谢
...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
daijope 2011-09-13
  • 打赏
  • 举报
回复
java 回车\n 10(int)
换行\r 13(int)
所以你输入的是三个。

4 怎么理解啊(这三个 buffer,0,buffer.length )??
将 len 字节从指定的初始偏移量为 off 的字节数组写入此流,先打印出你输入的字符,然后是回车换行,后面的都是空白字符。
打油的程序员 2011-09-13
  • 打赏
  • 举报
回复


import java.io.IOException;


public class TestIO {
public static void main(String[] args) throws IOException {
byte buffer[] = new byte[40]; // 1 怎么理解啊??
// 建立一个含 40个元素 的 字节数组对象,其中 每个元素都是8比特的字节


System.out.println("输入一个字符,回车键结束。");

int count = System.in.read(buffer);//count保存输入的字符数,你输入一个字符之后,当你敲回车时又相当于
//额外输入了回车换行符,最终会多出两个,因此结果会是3个
//还有一个细节,你输入的是占2个字节的字符,系统自动强制转换为字节后才存放当buffer中,
//所以buffer[0] buffer[1] buffer[2] 这三个字节对应三个字符,而不是6个字节对应3个字符



System.out.println("保存在缓冲区的个数:"+count); // 2 为什么我输入的值 和 保存在缓冲区的个数不同哦??

System.out.println("输出 buffer元素值");
for(int i=0 ; i<count ; i++ )
{
System.out.println(""+buffer[i]); //buffer[i] 3 输出的是什么值啊? 怎么产生的值?
}
System.out.println("---------------------------------------------------");
//你输入的是字符呀,你打印的是字节呀 ,
//字符本来就是16位的,但是强制转化为字节之后,只剩下8个二进制位了,
// 打印字节时,默认打印的是8个二进制位对应的十进制数


//如果你想打印出字符的样子,可以这么写
System.out.println("打印出的字符是....注意回车和换行符的字符形式是看不见的");
for(int i=0 ; i<count ; i++ )
{
System.out.println(""+(char)buffer[i]); //
}
System.out.println("---------------------------------------------------");
//如果你想打印出字符的样子,可以这么写
System.out.println("打印出的二进制位是....注意回车和换行符的二进制形式能够看见,但高位的0不会显示");
for(int i=0 ; i<count ; i++ )
{
System.out.println(""+Integer.toBinaryString((int)buffer[i])); //
}
System.out.println("---------------------------------------------------");



System.out.println("输出buffer 字符元素");
System.out.write(buffer,0,buffer.length); // 4 怎么理解啊(这三个 buffer,0,buffer.length )??

//out在这个程序里就可以认为是控制台,
//write就是out输出数据的意思,此时又将字节逐个转为字符后在打印
//数据从buffer数组中取出
//从buffer字节数组的第0个下标开始
//到buffer字节数组的第length-1个下标结束(包括0包括length下标,遵循左闭右开的原则)

//第一个字符显示为你输入的字符
//第二个,第三个显示为换行
//第4个开始没存数据,会显示乱七八糟的东东
}
}



安心逍遥 2011-09-13
  • 打赏
  • 举报
回复
java 回车\n 10(int)
换行\r 13(int)
输入的是三个。

uastation 2011-09-13
  • 打赏
  • 举报
回复
多看API文档.里面都有记录着..
TKD03072010 2011-09-13
  • 打赏
  • 举报
回复
多看看API
flyingZippo 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 k3108001263 的回复:]
Java code



import java.io.IOException;


public class TestIO {
public static void main(String[] args) throws IOException {
byte buffer[] = new byte[40]; // 1 怎么理解啊??
// 建立一……
[/Quote]+1

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧