在我的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中。)
答案 0 :(得分:3)
在我的Java应用程序中,我的一个对象具有一组值中的一个值
这就是java enums的用途。
关于“比字符串具有更高的性能”这个问题,这几乎是荒谬的。
您正在谈论静态常量。即使在您的应用中使用了100或1000次,它们的性能也无关紧要。重要的是编写易于阅读和维护的代码。因为这样,JIT才能投入使用并将其转换为经过优化的机器代码。
请理解:过早的优化是万恶之源!应用程序的性能好坏取决于许多其他因素,绝对不取决于将常量表示为int还是字符串。
除此之外:Java中某些东西的类型应该反映其性质。如果是字符串,则使其成为字符串(例如,当您主要希望将其用作字符串并将其连接到其他字符串时)。当您拥有数字并将其作为数字处理时,请将其设为整数。
答案 1 :(得分:2)
首先,int
始终在内存中使用固定大小,在大多数系统上为4字节(我猜总是在Java上)。
String
是一种复杂的类型,这意味着它不仅占用实际字符串数据的字节,而且还占用字符串的长度之类的其他字节。
因此,如果您可以在String
和int
之间进行选择,则应始终选择int
。它不需要太多的空间,并且操作起来更快。