Uma questão de desempenho?

3 respostas
anjomal

E ai galera blz …

Tenho uma duvida que so a galera que deve programa a mais tempo em JAVA deve saber responder, olhem o simples codigo abaixo:

public void setNomeCampos(String[] Nomes) {
        this.nomeCampos=Nomes;
    }

Minha função recebe um Array sem limites certo, eu venho das linguagens C/C++,onde eu programo ja alguns anos,em C/C++ esse codigo não possui nehuma queda de desempenho ja que o compilador na realidade aloca um ponteiro para variavel da função sendo que no C/C++ eu faria assim String Nomes* quando o compilador implementa o objeto string :smiley: senão teria um Array de ponteiros de char !!!, e o JAVA oque ele faz com Arrays sem Limites ? e oque eu fiz esta certo ? ou e melhor eu lidar com collections ?

falow galera
t+

3 Respostas

dukejeffrie

Eu adoro responder a algumas questões como a sua. Pq dá pra dizer sim pra tudo:

Sim, o Java vai fazer exatamente o mesmo que o C++, trocar o ponteiro do array. Em muitos casos, uma variável que contem um array é exatamente igual a um Object. Inclusive há maneiras de descobrir se um Object é um array e por aí vai.

Tem a classe java.lang.Arrays com várias coisas legais e outras nem tão legais. O JEdit usa uma função de cópia de arrays de bytes da classes System, não sei se é mesmo mais eficiente.

Sim para sua segunda pergunta: use Collections, a menos que vc tenha muita necessidade de usar arrays. Ainda mais quando o Collection é homogêneo, as vantagens são muitas.

[]s

Bani

Não entendi o que você quis dizer com array sem limite. Se você está se referindo ao tamanho, simplesmente não existe array sem tamanho fixo no Java. O que você tem aí é a variável Nomes (aliás, coloque o n minúsculo) do tipo array de String. Mas essa é apenas a variável. O objeto array em si, que você vai passar para o seu método e será utilizado através dessa variável, tem um tamanho fixo sim.
Java tem um campo a mais na array que indica justamente o tamanho e devido a ele fazer sempre a checagem dele ao usar os elementos (lançando exception caso você tente acessar um elemento fora do tamanho desta array) a performance dele não é tão boa quando a do C (mas claro que o compilador e a JVM tem várias otimizações pra tentar melhorar a performance no geral de seu código).
E discordo quanto a usar sempre collections. São super versáteis, mas se a questão é performance, use arrays.

anjomal

Vcs chegaram onde eu queria,Na realidade tem de se usar collections so quando necessario, de outrro modo tem de continuar com meus Arrays… não tem ponteiro :lol:

Criado 6 de fevereiro de 2003
Ultima resposta 7 de fev. de 2003
Respostas 3
Participantes 3