Sai*_*nda 7 java variable-assignment
我有两个字符串如下:
"yes", "no".
现在,我想以两种方式比较这些字符串:
直接:
示例:"yes".equals("no")
通过将字符串分配给某个变量:示例:
String string1 = "yes";
String string2 ="no";
string1.equals(string2);
Run Code Online (Sandbox Code Playgroud)在这两种情况下,是否有任何内存或性能差异?
man*_*uti 14
存在一个非常小的差异(实际上可以忽略不计,我们在这里谈论微优化),因为字符串应该存储在一个局部变量中,该变量在相应方法的堆栈帧上占用额外的内存.而常量实际上存储在常量池中并共享.根据调用次数可能对JVM进行优化,它不会产生任何影响.
请注意,如果变量是final有效的final(仅分配一次),字节码将是相同的,因为在这种情况下,它们被视为常量.
Vla*_*ich 10
编译这些代码片段将产生相同的字节码.因此,没有内存消耗或性能差异.
赋值运算符从不消耗内存(自动装箱的情况除外:) Integer number = 42.局部变量声明可以在堆栈中分配内存(如果有必要),但您应该更喜欢代码可读性.
根据编译器的不同,我猜可能会占用堆栈上2个额外的对象引用空间.这些足够小,你通常可以忽略它们,除非你描述了你的应用程序并且你发现了一个问题(非常不可能).
"是" .equals( "无")
在实际代码中几乎没有像这样的情况,因为你已经知道2个文字是否相同.
| 归档时间: |
|
| 查看次数: |
1420 次 |
| 最近记录: |