A saída gerada será um sequência de 2 dez vezes, a instrução int d, zera a variável d novamente ou cria outra em memória, de acordo com as repetições?
Outra dúvida, meio boba tbém, mas por exemplo:
inti=i+1;// não podemos fazer isso;
no caso, são duas instruções, uma pedindo para alocar espaço para um int e outra atribuindo a mesma variável + 1, porém li que o JVM lê as instruções da esquerda para direita, então ela irá ler primeiro a parte para alocar memória para um int i e usar o nome “i” como referência, então no caso a variável já vai existir e já poderia ser usada? Como aconteceu nesse exemplo ai, creio que só não é permitido pois eu poderia usar valores inválidos de memória já liberados pelo SO :shock:
Não sei se consegui ser claro…
Obrigado
Para usar a variável "d" do modo que você quer, você tem que declarar e inicializar ela fora do loop 'for'. Do jeito que você tá fazendo, toda vez que o loop for reexecutado ela vai ser declarada e inicializada com valor 1, e depois você incrementa mais 1 a ela, tomando o valor 2 e depois imprimindo-a. Tente desse modo:
No segundo caso, você vai pegar erros na sua IDE por que a variável "i" ainda não foi inicializada, só declarada. Você basicamente está dizendo:
"i é igual a i mais 1"
Mas i ainda não tem nenhum valor. Tente o seguinte:
publicstaticvoidmain(Stringe[]){inti;// Declarando a variáveli=0;// Inicializando com valor "0"i++;// Incrementando "1" à variávelSystem.out.println(i);// Imprimindo}
Boa sorte :)
dntalemao
pois é, fazendo dessa maneira da certo, porém minha dúvida seria mais em relação se a variável que foi declarada no início do for permanece no mesmo endereço de memória que ela estava antes, ou se a cada ciclo de loop ela é declarada em outra posição, pois pelo que eu sei, variáveis locais apenas deixam de ser ativas quando o método não está mais na pilha de chamadas. Vlw a força cara! 8)
Ziru
inti=i+1;// não podemos fazer isso;
Está dizendo assim "i vai receber o seu valor atual + um outro valor qualquer, seria o mesmo que usar.
inti+=1;//caso não inicialize i com nenhum valor ele irá receber 0 por padrão, então será 0 + 1.
dntalemao
Ziru:
int i=i+1; // não podemos fazer isso;
Está dizendo assim "i vai receber o seu valor atual + um outro valor qualquer, seria o mesmo que usar.
int i += 1; //caso não inicialize i com nenhum valor ele irá receber 0 por padrão, então será 0 + 1.
descobri como funciona o comportamento das variáveis declaradas e inicializadas dentro de um bloco de comando de repetição, utilizando esse código:
o que ocorre é que a variável array é uma variável local, após cada loop a referência dela é descartada e criada novamente na próxima iteração, note que a memória disponível foi diminuindo no começo e logo após aumentando, ou seja, o coletor de lixo entrou em ação.
Galera vlw pela ajuda.
abraços