首页
学习
活动
专区
圈层
工具
发布

java – 为什么InputStream#read()返回一个int而不是一个字节?

但是为何方法InputStream#read()需要返回int类型值呢?...首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char值,比如char...中的-1值,那么就占用了此字符,如果字节数据恰好对应-1值,那么就无法被正确读出,且会被错误认为i字节数据读好了,这就是返回int类型值的原因,当然,字节数据被转为int表示,需要高24位布零。...其次,既然只是如上的需求,那么为什么不返回short值呢? 实际上在Java内存模型中,对于short以及int类型值,都是占据32位的内存空间的。...换言之,我们没有在这个应用中返回int/short类型的数据是没有区别的,所以我们不妨就使用代表其实际内存模型的int类型值。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Qt 为什么QMap中设置参数类型为 int 会报错】错误 C2090 函数返回数组

    数组的大小是类型的一部分:int[4] 和 int[5] 是完全不同的类型,无法通用。 2....当尝试定义 QMapint, int[4]> 时,QMap 的底层代码会生成类似 T value() 的函数,而 T 如果是数组类型(如 int[4]),会导致函数尝试返回数组,触发 C2090 错误...错误示例 QMapint, int[4]> m_marrEngine; // 错误:C2090 编译器会报错,因为 QMap 的 value() 函数试图返回一个数组,而函数无法返回数组类型。...QMapint, int*> m_marrEngine; // 定义 // 初始化 int* arr = new int[4]{1, 2, 3, 4}; m_marrEngine[0] = arr;...QMap 的 value() 函数无法返回数组类型。 正确做法是使用以下替代方案: std::array:固定大小,类型安全,推荐使用。 QVector:动态大小,适合可变长度场景。

    22210

    为什么 age int 比 int age 更好?—— Go 的“名先于型”设计哲学

    视觉流:Age→int→(意义即刻捕获)眼动实验模拟:在垂直排列的字段中,左对齐的名字形成“语义列”,类型自然退为“注解列”。...二、技术优势:不止是“好看”1️⃣✅多变量声明无歧义C的陷阱:展开代码语言:C++AI代码解释int*x,y;//x是int*,y是int!...→map[string]int(type)而C的int(*f())[]需要“螺旋法则”(SpiralRule),人类难读,编译器也复杂。...=3;boolactive=4;}→字段名被string/int32挤到中间,扫描成本高。...定义Namestring左对齐名字,提升diff友好性函数参数funcgreet(namestring,ageint)参数名是接口契约核心接口方法Read(p[]byte)(nint,errerror)返回值名提示用途

    29010

    为什么是int main()而不是void main()

    C/C++ 小误区:void main() 这是基于我们学校老师一直使用void main(),而发的感慨,大一学习C语言时,我就在想,老师上课演示的为什么一直用void main(),而不是int main...) main函数的返回值类型必须是int,这样返回值才能传递给程序的调用者(如操作系统) 如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中(如exe文件)加入return...我还是建议大家最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯注意,vc6不会在目标文件中加入return 0;,大概是因为vc6是98年的产品,所以才不支持这个特性现在明白我为什么建议你最好加上...main( )等同于C99中的int main( void );int main( int argc, char *argv[] )的用法也和C99中定义的一样同样,main函数的返回值类型也必须是int...void main中如果main函数的返回值不是int类型,就根本通不过编译发出警告,所以,如果你想你的程序拥有很好的可移植性,请一定要用int main 4.返回值的作用 main函数的返回值用于说明程序的退出状态如果返回

    4.6K70

    Python 函数为什么会默认返回 None?

    return 语句,但是在函数调用后,都能取到一个返回值。...它们的执行效果跟直接写 return 语句相比,是完全相同的: 这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏的 return 返回值;一种写了 return,而且实际也有返回值。...不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢?

    3.3K40
    领券