JDK的OutputStream为什么方法write(int b)的入参类型是int呢?
生活随笔
收集整理的這篇文章主要介紹了
JDK的OutputStream为什么方法write(int b)的入参类型是int呢?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java的OutPutStream中有一個方法:write(int b)?
?文檔里是這么解釋的:
?將指定的字節(jié)寫入此輸出流。write 的常規(guī)協(xié)定是:向輸出流寫入一個字節(jié)。要寫入的字節(jié)是參數(shù) b 的八個低位。b 的 24 個高位將被忽略。
首先看Java中的函數(shù)定義: private native void write(int b, boolean append) throws IOException; 注意:是 native 方法 C語言中的定義: int fputc(int ch,FILE *fp) 我們看到兩種語言中都是使用int類型,而不是其它,為什么呢? 1、Java中有byte類型,c語言中沒有(C/C++中的定義:typedef?unsigned?char?BYTE); Java中定義了3類8種基本數(shù)據(jù)類型:①數(shù)值型——byte、short、int、long、float、double②文本型——char③邏輯型——boolean
2、為什么不用char?java中byte到char需要一個強(qiáng)制轉(zhuǎn)換,而 int 不需要;
3、為什么不用short? 這個是32位CPU4字節(jié)對齊的問題吧,胡老師指正; 4、C語言中整型量和字符量可以通用;
所以Java和c語言文件讀寫的通信,最佳類型就是int。
另外收錄胡老師的見解: typecast問題,高低位問題,符號問題,32位對齊問題 你還需要知道為什么用32bit不是64bit的bigint,因?yàn)閖ava允許64bit非原子操作 32位對齊是編譯原理,因?yàn)橹靼蹇偩€是32位傳輸數(shù)據(jù),所以所有低于32位的數(shù)據(jù)在傳輸時都要按照32位傳輸,因此內(nèi)存中也是保存32位,地址都是以4為單位的
相關(guān)參考: Java語言基本數(shù)據(jù)類型
?文檔里是這么解釋的:
?將指定的字節(jié)寫入此輸出流。write 的常規(guī)協(xié)定是:向輸出流寫入一個字節(jié)。要寫入的字節(jié)是參數(shù) b 的八個低位。b 的 24 個高位將被忽略。
?我怎么覺得這個方法有些奇怪呢。參數(shù)是一個int類型的整數(shù),為啥不直接是一個字節(jié)呢?
今天在群里有小伙伴提到這個問題,知乎上也有人問起這個問題,
就這個問題說說我的理解:
首先看Java中的函數(shù)定義: private native void write(int b, boolean append) throws IOException; 注意:是 native 方法 C語言中的定義: int fputc(int ch,FILE *fp) 我們看到兩種語言中都是使用int類型,而不是其它,為什么呢? 1、Java中有byte類型,c語言中沒有(C/C++中的定義:typedef?unsigned?char?BYTE); Java中定義了3類8種基本數(shù)據(jù)類型:①數(shù)值型——byte、short、int、long、float、double②文本型——char③邏輯型——boolean
2、為什么不用char?java中byte到char需要一個強(qiáng)制轉(zhuǎn)換,而 int 不需要;
3、為什么不用short? 這個是32位CPU4字節(jié)對齊的問題吧,胡老師指正; 4、C語言中整型量和字符量可以通用;
所以Java和c語言文件讀寫的通信,最佳類型就是int。
另外收錄胡老師的見解: typecast問題,高低位問題,符號問題,32位對齊問題 你還需要知道為什么用32bit不是64bit的bigint,因?yàn)閖ava允許64bit非原子操作 32位對齊是編譯原理,因?yàn)橹靼蹇偩€是32位傳輸數(shù)據(jù),所以所有低于32位的數(shù)據(jù)在傳輸時都要按照32位傳輸,因此內(nèi)存中也是保存32位,地址都是以4為單位的
相關(guān)參考: Java語言基本數(shù)據(jù)類型
C語言基本數(shù)據(jù)類型簡介
C語言文件操作詳解
總結(jié)
以上是生活随笔為你收集整理的JDK的OutputStream为什么方法write(int b)的入参类型是int呢?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux笔记】第七篇、配置Maria
- 下一篇: Linux不得不知道的目录和文件