相关疑难解决方法(0)

如何比较Java中的字符串?

==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.

==坏?什么时候应该不应该使用它?有什么不同?

java string equality

726
推荐指数
23
解决办法
376万
查看次数

如果从数组中复制了Java,为什么Java需要对最终变量进行显式强制转换?

从以下代码开始......

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)

java arrays int byte casting

57
推荐指数
3
解决办法
2694
查看次数

字符串池:"Te"+"st"比"Test"快?

我正在尝试一些关于String Pool的性能基准测试.但是,预计结果不会出现.

我做了3个静态方法

  • perform0()方法...每次都创建一个新对象
  • perform1()方法...字符串文字"测试"
  • perform2()方法...字符串常量表达式"Te"+"st"

我的期望是(1.最快 - > 3.最慢)

  1. 由于字符串池化而"测试"
  2. "Te"+"st",因为字符串池,但因为+运算符而比1慢
  3. 新的String(..)因为没有字符串池.

但基准测试显示"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)

java string benchmarking pool concatenation

7
推荐指数
1
解决办法
333
查看次数

标签 统计

java ×3

string ×2

arrays ×1

benchmarking ×1

byte ×1

casting ×1

concatenation ×1

equality ×1

int ×1

pool ×1