定义常量标识符的最佳方法?

时间:2019-02-14 10:51:01

标签: java android

在我的Java应用程序中,我的一个对象具有一组值中的一个值。现在,我想知道如何定义它们以提高性能:

private static final String ITEM_TYPE1= "type1"

private static final int ITEM_TYPE1= 1

定义int是否比string更好? (我应该将值转换为字符串,所以我想将其定义为字符串,但出于性能方面的考虑而担心,因为比较ints比进行srtings更为简单)

编辑我知道枚举,但是我只想知道int是否比字符串具有更好的性能?这取决于JDK和JRE如何处理情况。 (在Android dalvik或ART中。)

2 个答案:

答案 0 :(得分:3)

  

在我的Java应用程序中,我的一个对象具有一组值中的一个值

这就是java enums的用途。

关于“比字符串具有更高的性能”这个问题,这几乎是荒谬的。

您正在谈论静态常量。即使在您的应用中使用了100或1000次,它们的性能也无关紧要。重要的是编写易于阅读和维护的代码。因为这样,JIT才能投入使用并将其转换为经过优化的机器代码。

请理解:过早的优化是万恶之源!应用程序的性能好坏取决于许多其他因素,绝对不取决于将常量表示为int还是字符串。

除此之外:Java中某些东西的类型应该反映其性质。如果是字符串,则使其成为字符串(例如,当您主要希望将其用作字符串并将其连接到其他字符串时)。当您拥有数字并将其作为数字处理时,请将其设为整数。

答案 1 :(得分:2)

首先,int始终在内存中使用固定大小,在大多数系统上为4字节(我猜总是在Java上)。

String是一种复杂的类型,这意味着它不仅占用实际字符串数据的字节,而且还占用字符串的长度之类的其他字节。

因此,如果您可以在Stringint之间进行选择,则应始终选择int。它不需要太多的空间,并且操作起来更快。