public static void main (String[] args){
int[] num;
int soma =0;
num = new int [500];
for (int i= 0; i <500; i++){
num[i]=i+i;
System.out.println(i);
}
for (int a= 0; a<500; a++){
soma=num[a]+soma;
}
System.out.println(soma);
}
public static void main (String[] args){
int[] num;
int soma =0;
num = new int [500];
for (int i= 0; i <500; i++){
num[i]=i+i;
System.out.println(i);
soma+=num[i];
}
System.out.println(soma);
}
mais mesmo assim eu vou terde alocar 500 espaços inteiros na memória mais obrigado já é uma outra forma de ver o assunto
Veja que a lógica de processamento do laço não influencia na alocação dos 500 objetos. O responsável por isso é unicamente a inicialização da variável num. O problema de trabalhar com arrays é exatamente a inflexibilidade de manipular seu tamanho de forma dinâmica.
Uma forma de melhorar este desempenho é você trabalhar com uma Lista de Integers. Teria o mesmo efeito, porém, o tamanho seria dinamicamente alocado. Segue a adaptação:
public static void main (String[] args){
List<Integer> num = new ArrayList<>();
int soma =0;
for (int i= 0; i <500; i++){
num.add(i+i);
System.out.println(i);
soma+=num.get(i);
}
System.out.println(soma);
}
O que você está tentando fazer exatamente ?
int soma = 0;
for(int i = 0 ; i < 500; i++){
soma += i;
}
soma *= 2;
estou estudando ai queria melhorar o código;;
Mas o que o código faz exatamente ? Até onde consegui entender, você dobra os números de 0 a 499 e depois soma tudo. Para fazer isso nem de array você precisa, é só jogar tudo na variável soma. Mais eficiente ainda, é aproveitar a propriedade distributiva e deixar para multiplicar po 2 somente o resultado final.
eu não dobro os numeros apenas somo :::
obrigado vcs me ajudaram já mais do que era precisso eu continuo daqui obrigadão mesmo ;;;;
isso é a mesma coisa que dobrar …