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á !
Usei da licença poética para trocar o getSelectedItem() por getItemAt() pra ficar mais simples o exemplo aqui. :)
Marky.Vasconcelos
Nenhuma.
O operador i += X na hora de compilação vira i = i + X
O operador i++ na compilação vira i = i +1
Isso são só “syntax sugar” pra ficar mais facil programar.
sergiotaborda
Mark_Ameba:
O operador i++ na compilação vira i = i +1
Isso são só “syntax sugar” pra ficar mais facil programar.
e ++i vira o quê ?
i++ não vira coisa nenhuma é uma instrução só. assim como i-- e ++i e --i
++ é um operador unário
++ não é sintax sugar.
pablosaraiva
Sim.
Só pra deixar mais claro o que o sergiotaborda disse.
b vale 0.
Se você fizer:
a = b++;
Você tera a = 0 e b = 1.
Pois primeiro “a” recebe o valor de “b” e após “b” é acrescido de um.
Mas se você fizer:
a = ++b;
Você terá a = 1 e b = 1.
Pois ele primeiro soma 1 em “b” e depois “a” recebe o novo valor de “b”.
O que também é diferente de:
a = b + 1, onde a = 1 e b = 0.
Pois nesse caso não alteramos o valor de b.
Então temos que ter atenção na hora do uso dos operadores para não gerar confusão e erros difíceis de encontrar.
pedroroxd
hmm
valew ae
Marky.Vasconcelos
sergiotaborda:
Mark_Ameba:
O operador i++ na compilação vira i = i +1
Isso são só “syntax sugar” pra ficar mais facil programar.
e ++i vira o quê ?
i++ não vira coisa nenhuma é uma instrução só. assim como i-- e ++i e --i
++ é um operador unário
++ não é sintax sugar.
Verdade esqueci disso é um operador.
pedroroxd
Em questão de velocidade…
(Mesmo que não notável)…
Faz diferença fazer i = i+1 ou i++ ou ++i?
sergiotaborda
pedroroxd:
Em questão de velocidade…
(Mesmo que não notável)…
Faz diferença fazer i = i+1 ou i++ ou ++i?
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.
pedroroxd
Firmeza…
Vlw pelo exclarecimento =)
edmarr
Eh facil , basta fazer um teste de mesa
publicclassTestaOperador{publicstaticvoidmain(String[]args){inti=0;intj=0;System.out.println("Valor de i : "+(i++));System.out.println("Valor de j : "+(++j));}}
vc verá que no ++j , sera apresentado um valor diferente , significa q ele faz a operação antes de usar a variavel .
ViniGodoy
O mais rápido desses 3 é o ++i.
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.
No caso de ++i, a soma ocorre imediatamente.
pedroroxd
Sakei vini
Vlws ae dinovo =)
Vou dar como resolvido…