==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.
是==坏?什么时候应该不应该使用它?有什么不同?
从以下代码开始......
byte foo = 1;
byte fooFoo = foo + foo;
Run Code Online (Sandbox Code Playgroud)
当我尝试编译此代码时,我将收到以下错误...
错误:(5,27)java:不兼容的类型:从int到byte的可能有损转换
......但如果foo是最终的......
final byte foo = 1;
final byte fooFoo = foo + foo;
Run Code Online (Sandbox Code Playgroud)
该文件将成功编译.
转到以下代码......
final byte[] fooArray = new byte[1];
fooArray[0] = 1;
final byte foo = fooArray[0];
fooArray[0] = 127;
System.out.println("foo is: " + foo);
Run Code Online (Sandbox Code Playgroud)
......会打印出来的
foo is: 1
Run Code Online (Sandbox Code Playgroud)
......很好.该值将复制到最终变量,不能再更改.使用数组中的值不会更改foo(正如预期的那样...)的值.
为什么以下需要演员?
final byte[] fooArray = new byte[1];
fooArray[0] = 1;
final byte foo = fooArray[0];
final byte fooFoo = foo + …Run Code Online (Sandbox Code Playgroud) 我正在尝试一些关于String Pool的性能基准测试.但是,预计结果不会出现.
我做了3个静态方法
我的期望是(1.最快 - > 3.最慢)
但基准测试显示"Te"+"st"比"Test"快一点.
new String(): 141677000 ns
"Test" : 1148000 ns
"Te"+"st" : 1059000 ns
new String(): 141253000 ns
"Test" : 1177000 ns
"Te"+"st" : 1089000 ns
new String(): 142307000 ns
"Test" : 1878000 ns
"Te"+"st" : 1082000 ns
new String(): 142127000 ns
"Test" : 1155000 ns
"Te"+"st" : 1078000 ns
...
Run Code Online (Sandbox Code Playgroud)
这是代码:
import java.util.concurrent.TimeUnit;
public class StringPoolPerformance {
public static long perform0() {
long start = System.nanoTime();
for …Run Code Online (Sandbox Code Playgroud)