java 边界_Java数组边界问题

各路大神请驻留,我的编写了一个简单类,只有一个Main函数,这是里面唯一的代码:try{FileInputStreamfis3=newFileInputStream("123.txt");byte[]buf3=newbyte[1024];inti=0;while((b...

各路大神请驻留,我的编写了一个简单类,只有一个Main函数,这是里面唯一的代码:

try{

FileInputStream fis3 = new FileInputStream("123.txt");

byte[] buf3 = new byte[1024];

int i = 0;

while((buf3[i] = (byte)fis3.read()) > 0){

i++;

}

System.out.print(i + "\n");

System.out.print(buf3.length + "\n");

System.out.print(new String(buf3, 0, buf3.length));

System.out.println();

System.out.print(new String(buf3, 0, i));

fis3.close();

}

catch(IOException ex){

ex.printStackTrace();

}

输出的结果如下:

136

1024

Hello World!ÿ

Hello World!

问题:为什么第一次输出字符串,却出现乱码呢? 还有:为什么buf3.length值居然是1024?

完整的136长度的字符串是这样的:

This is a test file for JavaIO.

To test InputStream class and OutputStream class.

To test Reader class and Writer class.

Hello World!

因为输入限制字数,所以我之把最后一行给贴出来了。

我看书上都说 buf3.length 将返回数组的实际长度,这个实际长度我就不明白了。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值