O que é mais performático ao comparar Strings que você sabe que o tamanho será sempre um?

Eu tenho uma String retornada do banco de dados que sempre terá tamanho igual a um.

Esta seqüência pode ser igual a “0”, “1”, “S”, “N” ou nulo, que na verdade é uma constraint no banco de dados que eu não estou autorizado a substituir por causa de fins de registro.

Considerando que os valores de “S” ou “N” são maiúsculas ou minúsculas, o que é mais performático?

public boolean IsTrue {
    return this.str = null && (this.str.equals ("1") || this.str.equalsIgnoreCase ("S"));
}
[/code]ou[code]
public boolean IsTrue {
    if (this.str ! = null) {
         final char caracter = this.str.charAt(0);
         return caracter == '1' || caracter == 'S' || caracter == 's';
     }
     return false;
}

PS: Por favor, não considerem o nome dos métodos, campos e variáveis.

Pq vc não faz um for 0 —> 100000 e vê a diferença de tempo? [=

Acho que a performance nesse caso teria uma diferença irrisória(a não ser que sua máquina tenha um AMD K6) :stuck_out_tongue:

Eu iria de primeiro caso, economiza linhas de código, fica bem mais elegante.

O segundo caso, ao meu ver, acaba custando o mesmo que o primeiro, visto as conversões que são feitas.

Enfim, acho que se existem métodos pra manipular esse valor como String, vamos aproveitá-los em prol da legibilidade do código. :wink:

Herbert,

Vou tentar fazer esse benchmarking “manual”.

Ruttman,

Prefiro o primeiro código mesmo não questão de legibilidade também, mas queria mesmo saber sobre a performance.

Pra quem quiser ver outras respostas:

http://stackoverflow.com/questions/19544896/whats-more-performatic-when-comparing-strings-that-you-know-the-length-will-alw