黑马程序员技术交流社区
标题:
在写练习时遇到的一个小问题
[打印本页]
作者:
韩伟
时间:
2012-8-1 19:59
标题:
在写练习时遇到的一个小问题
本帖最后由 韩伟 于 2012-8-1 20:02 编辑
我在做管道输入练习时发现一个这样的问题,请大家来指点一下:
import java.io.*;
class PipedOutputStreamDemo
{
public static void main(String []args) throws IOException
{
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream();
in.connect(out);
Read r = new Read(in);
Write w = new Write(out);
Thread p1 = new Thread(r);
Thread p2 = new Thread(w);
p1.start();
p2.start();
}
}
class Read implements Runnable
{
private PipedInputStream in = new PipedInputStream();
public void run()
{
try
{
byte [] buf = new byte[1024]; <font color="red"> //这里如果是Byte [] buf = new Byte[1024]时,
// String s = new String(buf,0,len);这句话就回出错,
//这是为什么呢,难道他们不一样吗?</font>
int len = in.read(buf); <font color="red"> //还有一点儿就是好像并不存在read(byte[]b)这个方法,
//又没有说明<strong>read</strong>(byte[] b, int off, int len)
//方法的后面两个参数可以缺省,为什么可以这样用呢?</font>
String s = new String(buf,0,len);
System.out.println(s);
in.close();
}
catch(IOException e)
{
throw new RuntimeException("Read Error!");
}
}
Read(PipedInputStream in)
{
this.in = in;
}
}
class Write implements Runnable
{
private PipedOutputStream out = new PipedOutputStream();
Write(PipedOutputStream out)
{
this.out = out;
}
public void run()
{
try
{
out.write("piped come on!".getBytes());
out.close();
}
catch(IOException e)
{
throw new RuntimeException ("Write Error!");
}
}
}
复制代码
作者:
韩伟
时间:
2012-8-1 20:03
为什么我提问的那两句话没有变红呢?
作者:
朱烈葵
时间:
2012-8-1 20:36
Byte [] buf = new Byte[1024],没有这样的的
byte [] buf = new byte[1024];
一个字符包装类,一个是基本数据类型
第二个问题是,如果没指定偏移量,默认是数组全部、
作者:
胡文凡
时间:
2012-8-2 20:03
一个一个回答
这里如果是Byte [] buf = new Byte[1024]时, String s = new String(buf,0,len);这句话就回出错,
Byte是byte的包装类型。相当于Integer与int的区别,看过有人这样创建int数组吗 Integer[] ins= new Integer[3];
String类有String(byte[] bytes, int offset, int length)这个构造方法,没有String(Byte[] bytes, int offset, int length)这样这样的构造方法
还有一点儿就是好像并不存在read(byte[]b)这个方法。
PipedInputStream从其父类InputStream中继承了read(byte[]b)这个方法。返回的实际读取的字节数。比如读了1024个字节数,则返回去1024。没读满只读了70个字节数的话就返回70.
还有没有变红是因为代码错误。。。
作者:
韩伟
时间:
2012-8-3 08:39
明白了,谢谢{:soso_e181:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2