java – 为什么有人会像这样构造一个while循环?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么有人会像这样构造一个while循环?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1460字,纯文字阅读大概需要3分钟。
内容图文
![java – 为什么有人会像这样构造一个while循环?](/upload/InfoBanner/zyjiaocheng/760/8e83e0ef7e534a52b1acdd38ab7a1bb7.jpg)
我正在读一本关于Java的书,我们正在从一个频道读到一个ByteBuffer.我找到了作者构造while循环奇数的方式:
try (FileChannel inCh = (FileChannel) Files.newByteChannel(file)) { ByteBuffer lengthBuf = ByteBuffer.allocate(8); int strLength = 0; ByteBuffer[] buffers = { null, ByteBuffer.allocate(8) }; while(true) { if(inCh.read(lengthBuf) == -1) break; lengthBuf.flip(); strLength = (int)lengthBuf.getDouble(); buffers[0] = ByteBuffer.allocate(2*strLength); if(inCh.read(buffers) == -1) { System.err.println("EOF found reading ht eprime string."); break; } System.out.printf("String length: %3s String: %-12s Binary Value: %3d%n", strLength, ((ByteBuffer) (buffers[0].flip())).asCharBuffer().toString(), ((ByteBuffer)buffers[1].flip()).getLong()); lengthBuf.clear(); buffers[1].clear(); } System.out.println("\nEOF reached."); } catch (IOException e) {
我试过这样的:
while(inCh.read(lengthBuf) != -1) {
它的工作方式相同.是否有一个实际或代码清晰的原因,作者会像他一样写出来?
解决方法:
很明显,你的循环版本在语义上是相同的.但是,这不是唯一要考虑的事情.
请注意,在while循环的下方还有第二个条件会突破循环.我怀疑这是推动作者使用的原因(真实).
通过将其写为while(true),您可以提醒读者,内部必须有一个或多个断点.读者将不得不在循环内部查看休息时间,并希望能够找到它们.
写你的方式,随意的读者可能会扫描代码的顶部,并假设while条件是循环终止的唯一方法.
要考虑的另一点是对称性或平衡性.正如原作者所写,循环终止都是相同的形式.即从循环内打破.你的版本感觉不对称. while测试中的一个终止点,以及循环内的不同性质的另一个终止点.
内容总结
以上是互联网集市为您收集整理的java – 为什么有人会像这样构造一个while循环?全部内容,希望文章能够帮你解决java – 为什么有人会像这样构造一个while循环?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。