(JAVA)while 语句里的判断语句理解不了

问题描述:

(JAVA)while 语句里的判断语句理解不了
public void run() {
// TODO Auto-generated method stub
ServerSocket serverSocket = null;
try{
serverSocket = new ServerSocket();
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024*4];
int temp = 0;
while((temp = inputStream.read(buffer)) = -1){
System.out.println(new String(buffer,0,temp));
}
}catch(IOException e){
e.printStackTrace();
}finally{
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.run();
}
我理解不了的是while((temp = inputStream.read(buffer)) = -1)
难道inputStream.read(buffer))可能是-1?
1个回答 分类:综合 2014-11-24

问题解答:

我来补答
API解释为:
返回:读入缓冲区的总字节数,如果由于流末尾已到达而不再有数据,则返回 -1.
详细如下:
public int read(byte[] b)
throws IOException从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中.以整数形式返回实际读取的字节数.在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞.
如果 b 为 null,将抛出 NullPointerException.如果 b 的长度为 0,则无字节可读且返回 0;否则,要尝试读取至少一个字节.如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少可以读取一个字节并将其存储在 b 中.
将读取的第一个字节存储在元素 b[0] 中,下一个存储在 b[1] 中,依次类推.读取的字节数最多等于 b 的长度.让 k 为实际读取的字节数;这些字节将存储在元素 b[0] 至 b[k-1] 之间,不影响元素 b[k] 至 b[b.length-1].
如果不是因为流位于文件末尾而无法读取读取第一个字节,则抛出 IOException.特别是,如果输入流已关闭,则抛出 IOException.
类 InputStream 的 read(b) 方法的效果等同于:read(b,0,b.length) 参数:b - 读入数据的缓冲区.
返回:读入缓冲区的总字节数,如果由于流末尾已到达而不再有数据,则返回 -1.
抛出:IOException - 如果发生 I/O 错误.
NullPointerException - 如果 b 为 null.
另请参见:read(byte[],int,int)
 
 
展开全文阅读
剩余:2000
下一页:铜,及其化合物