Pessoal, tava vendo 1 tópico ali, e bateu 1 dúvida…
Qual a diferença entre:
i+=2;
i=i+2;
E entre:
i+=1;
i=i+1;
i++;
++i;
E entre:(Sendo jcombo um JComboBox)
String a =String.valueOf(jcombo.getSelectedItem());
String b = jcombo.getSelectedItem().toString();
String c = (String) jcombo.getSelectedItem();
O modo de operação é o mesmo?
Agradeço desde já !
[quote=pedroroxd]
Nem entre isso? (Sendo jcombo um JComboBox)
String a =String.valueOf(jcombo.getSelectedItem());
String b = jcombo.getSelectedItem().toString();
String c = (String) jcombo.getSelectedItem();[/quote]
Opa! Peraí!
O método getSelectedItem do JComboBox retorna um Object.
Se você fizer a chamada da forma a ou b, não deve dar erro, pois será invocado o método toString() do objeto.
Agora, no caso c, você vai ter uma runtime exception caso o objeto não seja string. O typecasting deve ser evitado sempre que possível.
Rode o seguinte código para ver o erro acontecendo apenas no terceiro caso.
[code] JComboBox jcombo = new JComboBox();
Integer i = 1;
jcombo.addItem(i);
String a = String.valueOf(jcombo.getItemAt(0));
String b = jcombo.getItemAt(0).toString();
String c = (String) jcombo.getItemAt(0);[/code]
Usei da licença poética para trocar o getSelectedItem() por getItemAt() pra ficar mais simples o exemplo aqui.
[quote=pedroroxd]Em questão de velocidade…
(Mesmo que não notável)…
Faz diferença fazer i = i+1 ou i++ ou ++i?[/quote]
Sim.
Operadores de incremento executam em um passo, soma e atribuição em dois.
Se java fosse uma linguagem nativa o i++ seria mapeado para uma instrução nativa do processador enquanto a atribução são sempre duas instruções.
Na realidade i = i + 1 nunca se usa em java por questões de legebilidade, não tanto de velocidade.
public static void main(String[] args) {
int i = 0;
int j = 0;
System.out.println("Valor de i : " + (i++));
System.out.println("Valor de j : " + (++j));
}
}[/code]
vc verá que no ++j , sera apresentado um valor diferente , significa q ele faz a operação antes de usar a variavel .
No caso de i = i+1, é gerado uma cópia da variável i, essa cópia é somada a 1, e só então o valor de i é modificado. Isso pq vc poderia fazer:
a = i+1; e não alterar o valor de i.
No caso do i++, é a mesma coisa. Uma cópia da variável i é gerada, e então acrescida de 1, para somente na linha seguinte ser somada.