这三个变量中的哪一个及其用法最快?
boolean booleanValue = true;
int booleanInt = 1;
byte booleanByte = 1;
char booleanCharI = 1;
char booleanCharS = '1';
还是其他什么? (String booleanString = "true";
)?
每个人有什么好处?在这种情况下,代码简单性比性能更重要吗?
答案 0 :(得分:3)
你很幸运,因为最明显的方法也是最快的:boolean
变量。作为一个例子,考虑一个稍微更复杂的布尔表达式,如下所示:
c = a && b || o != null && o.equals(p)
其中a
,b
和c
是您的“布尔”变量,并尝试重写您使用int
作为布尔值的情况。你会发现你被迫引入了更多的逻辑,可能会损害性能并且肯定会损害可读性。
总的来说,除非你在完整的代码库中对原始类型进行操作,否则你将永远无法观察到你正在考虑的各种选择的差异(除了字符串方法)。
答案 1 :(得分:1)
请注意,int,short,boolean和char实际上是JVM中的相同数据类型。例如,只需用包含boolean - javap -c的代码反编译任何类。你会看到布尔值与整数相关。 所以boolean或int - 在性能方面确实没有区别。
使用Boolean会产生包装布尔值的对象,它可能会更慢,但我相信JVM会对此进行优化,因为布尔值是不可变对象,可以使用类似国际化的东西。所以我认为也没有性能差异。
对于真正的优化,您可以使用BitSet或您自己的位集实现,基于整数在一个int中存储32个布尔值。
答案 2 :(得分:0)
不能说最快,但boolean booleanValue = true;
正确使用布尔值。
答案 3 :(得分:0)
很难想到在任何这些情况下都有性能优势。 boolean
true
比int
或char
1
更有意义。
如果你考虑布尔也可以有一些性能优势。 boolean over Boolean具有性能优势,因为boolean是一种原始类型并且使用更少的内存。
答案 4 :(得分:0)
一切都取决于使用情况,如果您要获得数百个布尔值,请考虑使用BitSet
。使用它将优化内存使用。
另一方面,所有原始类型都以四个或八个字节表示,并在一个原子操作中设置。