Pergunta

Estive recentemente pensar sobre a diferença entre as duas formas de definir uma matriz:

  1. int[] array
  2. int array[]

Existe uma diferença?

Foi útil?

Solução

Eles são semanticamente idênticos. A sintaxe int array[] só foi adicionado para ajudar os programadores C se acostumar com java.

int[] array é muito preferível, e menos confuso.

Outras dicas

Há uma ligeira diferença, se acontecer de você declarar mais de uma variável na mesma declaração:

int[] a, b;  // Both a and b are arrays of type int
int c[], d;  // WARNING: c is an array, but d is just a regular int

Note que esta é uma má estilo de codificação, embora o compilador irá quase certamente pegar o seu erro do momento que você tentar usar d.

Não há nenhuma diferença.

Eu prefiro o formato type[] name no é claro que a variável é um array (menos olhar ao redor para descobrir o que é).

EDIT:

Oh, espere, há uma diferença (eu esqueci, porque eu nunca declarar mais de uma variável de cada vez):

int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.

Não, estes são os mesmos. No entanto

byte[] rowvector, colvector, matrix[];

é equivalente a:

byte rowvector[], colvector[], matrix[][];

Java Specification . Isso significa que

int a[],b;
int[] a,b;

são diferentes. Eu não recomendo qualquer uma destas declarações múltiplas. Mais fácil de ler seria (provavelmente):

int[] a;
int[] b;

A partir 10.2 do Java Specification Language :

O [] pode aparecer como parte do tipo no início da declaração, ou como parte do Declarador para uma variável em particular, ou ambos, como neste exemplo:

 byte[] rowvector, colvector, matrix[];

Esta declaração é equivalente a:

byte rowvector[], colvector[], matrix[][];

Pessoalmente quase todas o código Java que eu já vi usos a primeira forma, o que faz mais sentido, mantendo todas as informações de tipo sobre a variável em um só lugar. Desejo a segunda forma foram recusadas, para ser honesto ... mas a vida é assim ...

Felizmente eu não acho que eu tenho nunca visto este código (válido):

String[] rectangular[] = new String[10][10];

Os dois comandos são a mesma coisa.

Você pode usar a sintaxe para declarar vários objetos:

int[] arrayOne, arrayTwo; //both arrays

int arrayOne[], intOne; //one array one int 

ver: http: //java.sun. com / docs / books / jls / second_edition / html / arrays.doc.html

Nenhuma diferença.

Sun :

O [] pode aparecer como parte do tipo no início da declaração, ou como parte do Declarador para uma variável em particular, ou ambos, como neste exemplo: byte[] rowvector, colvector, matrix[];

Esta declaração é equivalente a: byte rowvector[], colvector[], matrix[][];

Não há qualquer diferença entre os dois; tanto declarar uma matriz de ints. No entanto, o primeiro é preferível uma vez que mantém o tipo de informação em um só lugar. Este último só é realmente suportada para o benefício de C / C ++ programadores que se deslocam para Java.

Não há nenhuma diferença real; no entanto,

double[] items = new double[10];

é o preferido, uma vez que indica claramente que o tipo é um array.

Ambos são igualmente válidas. A forma é, contudo, desencorajados int puzzle[], o int[] puzzle é preferido de acordo com as convenções codificação . Veja também o oficial Java matrizes tutorial :

Da mesma forma, você pode declarar arrays de outros tipos:

byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;

Você também pode colocar os colchetes após o nome do array:

float anArrayOfFloats[]; // this form is discouraged

No entanto, convenção desencoraja essa forma; os suportes de identificar o tipo de matriz e deve aparecer com a designação do tipo.

Observe o último parágrafo.

Eu recomendo a leitura dos oficiais tutoriais Sun / Oracle em vez de alguns 3º queridos do partido. Você teria de risco acabam em aprender más práticas.

é uma forma alternativa, que foi emprestada de C, sobre o qual se baseia java.

Como curiosidade, há três maneiras de definir um método main válida em java:

  • public static void main(String[] args)
  • public static void main(String args[])
  • public static void main(String... args)

Não há nenhuma diferença, mas Sun recomenda colocá-lo ao lado do tipo, como explicado aqui

A opção mais preferido é int[] a - porque int[] é o tipo, e a é o nome. (A sua segunda opção é o mesmo que este, com espaço extraviado)

Funcionalmente, não há diferença entre eles.

O linguagem Java Specification diz:

The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example:

byte[] rowvector, colvector, matrix[];

This declaration is equivalent to:

byte rowvector[], colvector[], matrix[][];

Assim eles vão resultar em exatamente o mesmo código de byte.

Em Java, estes são simplesmente diferentes métodos sintáticos de dizer a mesma coisa.

Eles são o mesmo. Um é mais legível (para alguns) do que o outro.

Eles são completamente equivalentes. int [] array é o estilo preferido. int array[] é apenas fornecido como um estilo equivalente, C-compatível.

Ambos têm o mesmo significado. No entanto, a existência destes também variantes permite isso:

int[] a, b[];

que é o mesmo que:

int[] a;
int[][] b;

No entanto, isso é horrível codificação de estilo e nunca deve ser feito.

Não há nenhuma diferença em termos de funcionalidade entre os dois estilos de declaração. Ambos variedade declarar-int.

Mas int[] a mantém informações de tipo juntos e é mais detalhado, então eu preferi-lo.

Eles são os mesmos, mas há uma diferença importante entre estas declarações:

// 1.
int regular, array[];
// 2.
int[] regular, array;

em 1. regular é apenas um int, em oposição a 2. onde ambos regular e variedade são arrays de int do.

A segunda declaração que você tem é, portanto, preferível, uma vez que é mais clara. A primeira forma também é desencorajado de acordo com este tutorial no Oracle .

Como já foi dito, não há muita diferença (se você declarar apenas uma variável por linha).

Note que SonarQube trata o seu segundo caso de menor cheiro de código:

array designadores "[]" deve ser do tipo, não a variável (lula: S1197)

designadores de matriz deve sempre estar localizado no tipo para um código melhor legibilidade. Caso contrário, os desenvolvedores devem olhar tanto para o tipo ea nome da variável para saber se deve ou não uma variável é uma matriz.

Código Incompatível Exemplo

int matrix[][];   // Noncompliant
int[] matrix[];   // Noncompliant

Compliant Solução

int[][] matrix;   // Compliant

Sim, exatamente o mesmo. Pessoalmente, eu prefiro

int[] integers; 

porque torna imediatamente óbvio para quem lê o seu código que inteiros é uma matriz de int de, ao contrário de

int integers[];

que não fazer tudo tão óbvio, especialmente se você tiver várias declarações em uma linha. Mas, novamente, eles são equivalentes, por isso se resume a preferência pessoal.

Confira desta página em matrizes em Java para mais exemplos de profundidade.

quando declarar uma matriz de referência único, não há muita diferença entre eles. então as duas declarações seguintes são os mesmos.

int a[];  // comfortable to programmers who migrated from C/C++
int[] a;  // standard java notation 

quando declarar múltiplas referências de matriz, podemos encontrar diferença entre eles. as duas seguintes afirmações significam mesma. na verdade, é até o programador qual é seguir. mas a notação java padrão é recomendado.

int a[],b[],c[]; // three array references
int[] a,b,c;  // three array references

Ambos são ok. Sugiro que escolher um e ficar com ela. (Eu faço o segundo)

Enquanto as raízes solução int integers[] na linguagem C (e pode ser assim considerado a abordagem "normal"), muitas pessoas acham int[] integers mais lógico, uma vez que não permite criar variáveis ??de diferentes tipos (ou seja, um int e um array) em um declaração (em oposição a declaração de estilo C).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top