所以我正在学习java,我有一个问题。似乎int
,boolean
和string
类型几乎可以满足我在变量方面所需的一切,除非float
可能会在数字中需要十进制数字。
我的问题是,long
,double
,byte
,char
等其他类型是否曾在常规日常编程中使用?可以使用哪些实用的东西?他们存在什么?
答案 0 :(得分:114)
可能除了“短”之外,这可能有点浪费空间 - 有时字面上,它们都是课程的马匹:
[*]例如,在Pentium架构上的Hotspot中,f loat and double operations generally take exactly the same time,除了除法。
除非真的理解它,否则不要陷入这些类型的内存使用中。例如:
显然,有一些API调用(例如,由于某种原因需要浮点运算的非CPU密集型任务的各种调用),你只需要传递它要求的类型......!
请注意,String不是基本类型,因此它实际上不属于此列表。
答案 1 :(得分:18)
java int是32位,而long是64位,所以当你需要表示大于2 ^ 31的整数时,long就是你的朋友。有关使用long的典型示例,请参阅System.currentTimeMillis()
一个字节是8位,是大多数现代硬件上最小的可寻址实体,因此在从文件读取二进制数据时需要它。
一个double的大小是float的两倍,所以你通常会使用double而不是float,除非你对size或speed有一些限制并且float有足够的容量。
短路是两个字节,16位。在我看来,这是最不必要的数据类型,我在实际代码中并没有真正看到它,但同样,它可能对读取二进制文件格式或执行低级网络协议很有用。例如,IP端口号是16位。
Char表示单个字符,即16位。这与short的大小相同,但是short是有符号的(-32768到32767),而char是无符号的(0到65535)。 (这意味着ip端口号可能更准确地表示为char而不是short,但这似乎超出了chars的预期范围...)
有关这些详细信息的真正授权来源,请查看java language specification。
答案 2 :(得分:3)
您可以查看有关Java中基本类型的here。
这些类型之间的主要兴趣是内存使用情况。例如, int 使用32位,而 byte 仅使用8位。
想象一下,你在大型结构(数组,矩阵......)上工作,那么你最好处理你正在使用的类型,以减少内存使用。
答案 3 :(得分:3)
我想这种类型有几个目的:
1)它们对可以存储在其中的变量的大小(和符号)实施限制。
2)它们可以为代码添加一些清晰度(例如,如果您使用char,那么阅读代码的任何人都知道您打算在其中存储的内容)。
3)他们可以节省内存。如果你有一大堆数字,所有数字都是无符号且低于256,你可以将它声明为一个字节数组,与你声明一个int数组相比,可以节省一些内存。
4)如果您需要存储的数字大于2 ^ 32,则需要很长时间,对于非常大的浮点数,需要加倍。
答案 4 :(得分:0)
原始数据类型是必需的,因为它们是每个复杂集合的基础。
如果只需要一个小的整数(或其他),则使用long,double,byte等,这不会浪费你的堆空间。
我知道,在我们这个时代有足够的内存,但你不应该浪费它。
我需要“小的”用于数据库和流操作。
答案 5 :(得分:0)
整数应该用于数字
双打是用于表示小数的基本数据类型
字符串基本上可以包含任何数据类型,但使用整数更容易,并且除了文本外,使用字符串会让人感到困惑。
Chars 仅在您希望保留一个字母时使用,但它们基本上只是为了清晰起见
短裤,长片和花车可能没有必要,但如果你是,例如,创建一个大小为1,00000的数组,只需要保存少于1,000的数字,那么你会想要使用短裤,只是为了节省空间。
答案 6 :(得分:-1)
这与您正在处理的数据有关。当你只处理少量数据时,使用保留大部分内存的数据类型毫无意义。例如,许多数据类型在使用之前都会保留内存。以数组为例,即使你只使用了4个字节,它们也会保留一个默认数量(例如,256字节< - 一个例子!)。
See this link以获得答案