Vetor de bytes?

Sei que o algoritmo abaixo é algo que não sei faz mais praticamente, uma vez que temos a classe Scanner e podemos utilizar swing etc. Mas pra fins de estudo, resolvi fazer desta maneira. O mesmo está compilando e trazendo o resultado esperado. Só tenho uma dúvida que deixei no comentário do código:

import java.io.IOException;

public class C03AlgoritmoTeste
{
 	
 	public static void main (String[] args) throws IOException{

 		byte[] byte_num1 = new byte[50];
 		byte[] byte_num2 = new byte[50];
 		//por que não posso declarar os dois vetores de byte acima assim:
 		//byte[] byte_num1, byte_num2 = new byte[50];
 		//por que tem que ser um new pra cada um?
 		System.out.print("Digite o primeiro número: ");
 		System.in.read(byte_num1);
 		System.out.print("Digite o segundo número: ");
 		System.in.read(byte_num2);
 		String num1 = new String(byte_num1).trim();
 		String num2 = new String(byte_num2).trim();
 		int media = (Integer.parseInt(num1) + Integer.parseInt(num2))/2;
 		System.out.println("A média é: " + media);
 	}
}
byte[] b1 = new byte[50], b2 = new byte[50];
1 curtida

Cada variável byte_num1 e byte_num2 irá fazer referência para o seu objeto próprio objeto array de 50 elementos.

Show.

Entendi. Eu sou obrigado a dar new pra cada variável mas não preciso declarar o tipo mais de uma vez na mesma linha.

Obrigado.

1 curtida

Você poderia fazer assim, mas essa forma não é recomendada pois não é tão legível:

byte byte_num1[], byte_num2[] = new byte[50];

Além do mais, dessa forma ambas a variáveis irão referenciar o mesmo objeto e não é o que você quer.
Lembrando que arrays, mesmo de tipos primitivos, são objetos.

Mas neste caso, somente byte_num2 está sendo inicializado.

É verdade, viajei legal. :stuck_out_tongue: