在Java中使用什么原语

Mic*_*nes 1 java primitive primitive-types

我有点困惑什么时候使用什么原语.如果我定义了一些,我怎么知道是干什么用byte,short,intlong?我知道它们是不同的字节,但这是否意味着我只能将其中一个用于某个数字?

简单地说,我的问题是,我何时使用上面列出的四个原语中的每一个?

ζ--*_*ζ-- 5

如果我可以说定义一个数字,我怎么知道使用byte,short,int还是long?

根据您的使用情况而定.除非你有数十亿的数字,否则使用a int而不是a 不会有巨大的惩罚short.只需考虑变量可能使用的范围.在大多数情况下使用是合理的int,其范围是-2,147,483,648到2,147,483,647,而long处理数字在+/- 9.22337204*10 18范围内.如果你不确定,long不会特别伤害.

您可能想要byte特别使用的唯一原因是,如果要存储字节数据(如文件的某些部分),或者正在执行类似于网络通信或序列化的操作,其中字节数很重要.请记住,Java的字节也是签名的(-128到127).简而言之 - 对于十亿个元素的数组来说可能有用的是节省2GB的内存,但除了具有特定字节对齐的序列化以外,还没有特别有用.

这是否意味着我只能将其中一个用于某个数字?

不,你可以使用足够大的任何一个来处理这个数字.当然,十进制值需要a doublefloat-double通常是理想的,因为它具有更高的精度和一些缺点.但是,某些库(例如3D绘图)可能会使用浮点数.请记住,您可以投射数字类型(例如(byte) someInt(float) functionReturningADouble();