Existe maneira mais pratica de fazer isso sem usar tanta memória alocada?

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);
		
	}
1 curtida

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;
1 curtida

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 …