我对何时使用什么原语有点困惑。如果定义一个数字,如何知道使用byte
、short
、int
或long
?我知道它们是不同的字节,但这是否意味着我只能对某个数字使用其中的一个呢?
所以简单地说,我的问题是,我什么时候使用上面列出的四个原语中的每一个?
如果我定义一个数字,我怎么知道用什么byte,short,int或long?
取决于您的用例。与使用short
相比,使用int
不会有太大的损失,除非您有数十亿个数字。只需考虑变量可能使用的范围。在大多数情况下,使用int
是合理的,其范围是-2,147,483,648到2,147,483,647,而long
处理范围为+/-9.22337204*1018的数字。如果您不确定,long
不会造成特别的伤害。
您可能需要使用byte
的唯一原因是存储字节数据(如文件的一部分),或者进行网络通信或序列化(如字节数很重要)。请记住,Java的字节也是有符号的(-128到127)。简称相同--对于十亿元素数组节省2GB内存可能很有用,但对于使用特定字节对齐的序列化并不特别有用。
那是不是意味着我只能用其中一个对某个数字?
不,你可以用任何一个足够大的来处理这个数字。当然,十进制值需要double
或float
--double通常是理想的,因为它具有更高的精度和很少的缺点。然而,有些库(例如3D绘图)可能会使用浮点。请记住,您可以强制转换数值类型(例如(byte)someint
或(float)functionReturningADouble();
问题内容: Java不能执行运算符重载,但可以用于和和其他一些类。这怎么可能? 更新: 为什么这样做? 问题答案: 不是操作员重载的示例。在语言中被内置为合并运算符 和 算术加法运算符。 这意味着用Java编写程序的人不能重载运算符,但是就Java语言的语法而言,它被定义为连接和加法运算符。 编辑 它适用于其他类,如和由于自动装箱。 如果您看一下执行字符串连接的Java程序的字节码,您会发现它创建
问题内容: 已经使用在过去适度我发现它是非常有用的 许多情况。但是,我对这种方法的使用几乎没有理由 将这种方法放在之外。我的大胆猜测是, 在进行 有关.NET框架初始设计的工作和召开的会议中的某个时刻,决定有必要- 或至少非常有用-包括一种将 .NET框架中的所有内容都可以实现。 有谁知道确切的原因是什么?我是否错过了很多情况 足以证明自己是其中的一部分?什么 是原始的原因? 非常感谢! PS-再
问题内容: 从Java 5开始,我们已经对原始类型进行装箱/拆箱,因此将其包装为,依此类推。 我最近看到许多新的Java项目(肯定要求JRE的版本至少为5,如果不是6的话)正在使用int而不是,尽管使用后者要方便得多,因为它具有一些用于转换的辅助方法到long的值等。 为什么有些人仍然在Java中使用原始类型?有什么切实的好处吗? 问题答案: 在Joshua Bloch的有效Java条款 5:“避
问题内容: 我怕可变参数。我不知道该怎么用。 另外,让人们随心所欲地传递争论是很危险的。 什么样的上下文示例将是使用它们的好地方? 问题答案: 对于需要处理不确定数目的对象的任何方法,Varargs都是有用的。一个很好的例子是。格式字符串可以接受任意数量的参数,因此你需要一种机制来传递任意数量的对象。
问题内容: 我知道有很多文章可以解释如何在Java EE中使用CDI,但是我很难弄清楚这实际上带来了什么好处。例如,假设我有一个当前使用Foo实例的类。我可能会做 要么 我一直在阅读CDI,我可以做到: 但是为什么这比以前的基于工厂的方法更好呢?我认为还有一些我不知道的用例,但我无法识别。 如果我理解下面的响应,则概念是DI框架充当集中配置的主对象工厂。这是合理的解释吗? 更新资料 从那时起,我就
这里有两个语法。一个使用,一个不使用。他们都做了同样的事情。这些基本上是S05中“变量(非)插值”下的示例。在这个简单的例子中,他们都能够做同样的事情。 在哪些情况下,所有额外的输入都是合理的?标记在action类中有不同的方法,可能有一点好处。但是,您必须键入一些额外的内容才能获得该好处。 是否有一些特性使语法的其他部分更容易理解? 输出显示在action类中调用不同的方法: