`
djsl6071
  • 浏览: 578070 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Java 5 基本数据类型的底层存取特点

阅读更多

Java 5 基本数据类型的底层存取特点 

之所以以Java 5作为版本论述,是有特殊原因的,容后叙述。

正如前一篇文章浮点数在内存中的存储方式中引述的那样,在C/C++,以其其他的多数编程语言中,对于字节级的数据存储采取了传统的低字节存低地址,高字节存高地址,即从右到左送出一个数据,(写入流或文件时,总是从结尾往其中写,这与读和显示文件时从起点开始是相反的,比如0xFF0A,写入是先写0A字节,再写FF字节,而文件中显示的时候,实际上先得到0A再得到FF,如果不更改顺序使用是错误的,而一般语言都将这一切作为了规范,默认执行,对用户基本透明)这就造成了数据被读取后要反转每一个字节,才能恢复正常的数据位顺序,从而习惯人们从左到右的处理顺序(这一处理顺序,作为人们思想的延续体现在了所有的编程语言中)。Java推翻了这一惯例(1.不知是不是Java先这么做的;2.在Java 5之前,这一点一直容易为coder所忽视,即使5之后,忽视的几率也没有太大的变化),Java一开始,就采取符合人们思维习惯的方式存取底层数据,即数据位的存取始终遵循从左边开始到右结束,尽管这一突破有其相当积极的应用,然而在大多数编程语言仍旧保持旧有的惯例的情况下,这却成为了Java处理外来程序数据时,可能存在的致命问题,为此,Java 5开始推出的Integer的reverseBytes方法,,以及一开始就有的Float的intBitsToFloat和floatToIntBits方法,就很好地处理了这一情况。Java作为高级语言中面向对象的典范,遵循简单、回归自然的哲学理念,对于能够简单的思维决不复杂,能够不知道的绝对不要知道,这正是它诱人的地方。

Java 中判断文件末尾

以其他语言为例子,C/C++/VB,多以EOF判断文件最后一个标志位的字节或字符的整型值为-1,通过判断确定是否到达文件尾,java中也可以这样,但并不一定才用这种方法。

1. 主要的File类,IO类的方法,遇到文件末尾都会自动抛出EOFException异常,通过处理异常,就能很方便的判断文件末尾并进行相关操作。

2. InputStream中提供的available方法,用于判断下一次读取调用不被阻塞之前可以读取的字节数,但该方法由子类实现,可调用其子类。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics