变量-Java中long,double,byte,char的用途是什么?
所以我正在学习Java,但我有一个问题。 看起来int、long和double的类型几乎可以满足我在变量方面的所有需求,但是当需要使用十进制数字时,也许可以使用byte842。
我的问题是,是否在正常的日常编程中使用了其他类型,例如long、double、byte、char等? 这些可以用于哪些实际用途? 它们的作用是什么?
7个解决方案
114 votes
除了“ short”(可能是对空间的浪费)之外,“ short”可能是一个例外-有时,从字面上看,它们都是上课的动力:
当您不需要小数并且没有理由使用其他任何东西时,请使用int。 在大多数处理器/ OS配置上,这是计算机可以最有效处理的数量大小;
当您需要小数并且没有理由使用其他任何东西时,请使用双精度。
当您要表示一个字符时(或在极少数情况下需要两字节无符号算术)时,请使用char;
如果您特别需要操纵一个有符号的字节(稀有!),或者需要在一个字节块中移动,请使用一个字节。
当需要简单的“是/否”标志时,请使用布尔值;
在需要整数但大小可能超过20亿的情况下使用long(文件大小,以毫秒/纳秒为单位的时间测量,在高级用途中将多个数据压缩为一个数字);
对于以下几种罕见情况,请使用浮点数:(a)存储了大量的浮点数,并且值得节省内存,或者(b)执行大量的计算,并且可能会造成精度损失。 对于大多数应用程序,“浮点数”提供的精度非常差,但是运算速度却可以快一倍-值得一提的是,在您的处理器上对其进行测试,以发现确实如此! [*]
如果您确实需要2字节有符号算术,请使用缩写。 没有太多的情况...
[*]例如,在奔腾架构上的Hotspot中,除除运算外,浮点运算和双精度运算通常花费完全相同的时间。
除非您真的了解,否则不要对这些类型的内存使用感到困惑。 例如:
在Hotspot中,每个对象的大小都四舍五入为16个字节,因此具有单个字节字段的对象将与具有长或双字段的单个对象完全占用相同的空间;
当将参数传递给方法时,每种类型都占用4或8个字节的堆栈:将方法参数从int更改为short不会节省任何内容! (我见过人们这样做...)
显然,有某些API调用(例如,由于某种原因而导致浮点数的非CPU密集型任务的各种调用),您只需要将其传递给它所要求的类型...!
请注意,String不是原始类型,因此它实际上并不属于此列表。
Neil Coffey answered 2020-06-26T01:01:11Z
18 votes
java int是32位,而long是64位,因此当您需要表示大于2 ^ 31的整数时,long是您的朋友。 有关使用long的典型示例,请参见System.currentTimeMillis()
字节为8位,是大多数现代硬件上最小的可寻址实体,因此从文件读取二进制数据时需要使用此字节。
双精度浮子的大小是浮子的两倍,因此,除非对大小或速度有一些限制并且浮体具有足够的容量,否则通常使用双精度而不是浮子。
短是两个字节,16位。 在我看来,这是最不需要的数据类型,在实际代码中我还没有真正看到它,但是同样,它对于读取二进制文件格式或执行低级网络协议可能很有用。 例如,ip端口号是16位。
Char表示单个字符,为16位。 它的大小与short相同,但是short是带符号的(-32768到32767),而char是unsigned的(0到65535)。 (这意味着一个ip端口号可能更正确地表示为一个字符而不是一个短字符,但这似乎超出了字符的预期范围...)
有关这些细节的真正权威信息,请参阅Java语言规范。
Rolf Rander answered 2020-06-26T01:01:55Z
3 votes
您可以在这里了解Java中的原始类型。
这些类型之间的主要关注点是内存使用情况。 例如,int使用32位,而byte仅使用8位。
假设您在大型结构(数组,矩阵...)上工作,那么您将更好地照顾所使用的类型,以减少内存使用量。
Romain Linsolas answered 2020-06-26T01:02:24Z
3 votes
我猜这种类型有几种用途:
1)它们对可以存储在其中的变量的大小(和符号)施加限制。
2)它们可以使代码更加清晰(例如,如果您使用字符,那么任何阅读该代码的人都知道您打算在其中存储什么)。
3)他们可以节省内存。 如果您有大量的数字数组,所有数字都将是无符号的,并且小于256,则可以将其声明为字节数组,与声明整数数组相比,可以节省一些内存。
4)如果需要存储的数字大于2 ^ 32,则需要很长的时间;对于很大的浮点数,则需要加倍。
Ben answered 2020-06-26T01:03:02Z
0 votes
需要原始数据类型,因为它们是每个复杂集合的基础。
如果只需要一个小整数(或其他任何整数),则不会浪费堆空间,因此可以使用long,double,byte等。
我知道,我们这个时代有足够的RAM,但是您不应该浪费它。
我需要“小的”数据库和流操作。
guerda answered 2020-06-26T01:03:35Z
0 votes
通常,整数应用于数字。
双精度是用于表示小数的基本数据类型。
字符串基本上可以容纳任何数据类型,但使用int会更容易,并且使用字符串(文本除外)会造成混淆。
当您只希望保留一个字母时使用字符,尽管它们本质上只是为了清楚起见。
短裤,长号和浮点数可能不是必需的,但是,例如,如果要创建大小为100000的数组,而该数组仅需要容纳小于1000的数字,那么您将希望使用短裤,只是为了节省空间。
Ben Bowles answered 2020-06-26T01:04:13Z
-1 votes
它与您正在处理的数据有关。 当您只处理少量数据时,使用保留大量内存的数据类型毫无意义。 例如,许多数据类型在使用之前就已经保留了内存。 以数组为例,即使您仅使用4个字节,它们也会保留默认数量(例如256个字节
看到此链接为您的答案
Kezzer answered 2020-06-26T01:04:38Z