¿Hay alguna diferencia entre int[] a e int a[] en Java?

Una array en Java es un grupo de variables del mismo tipo a las que se hace referencia con un nombre común. Las arrays en Java funcionan de manera diferente a como lo hacen en C/C++. En Java, Array se puede declarar de las siguientes maneras:

Arrays unidimensionales: la forma general de una declaración de array unidimensional es 

tipo var-nombre[];
O
tipo[] var-nombre;

Arrays multidimensionales:

int[][] intArray = new int[10][20]; //un arreglo o array 2D
int[][][] intArray = new int[10][20][10]; //una array 3D

Diferencia entre «int[] a» e «int a[]» para arreglos 1-D en Java

Para 1-D Array, en Java, no hay diferencia y cualquiera de las sintaxis mencionadas se puede usar para declarar una array 1-D.

Por ejemplo:

Java

// Java program to illustrate creating an array
// of integers, puts some values in the array,
// and prints each value to standard output.
 
class GFG {
    public static void main(String[] args)
    {
        // declares an Array of integers
        // using method 1
        int[] arr1;
        arr1 = new int[5];
        arr1[0] = 10;
        arr1[1] = 20;
        arr1[2] = 30;
        arr1[3] = 40;
        arr1[4] = 50;
 
        // accessing the elements
        // of the specified array
        for (int i = 0; i < arr1.length; i++)
            System.out.println("Array from method 1: "
                               + arr1[i]);
        System.out.println();
 
        // declares an Array of integers
        // using method 2
        int arr2[];
        arr2 = new int[5];
        arr2[0] = 1;
        arr2[1] = 2;
        arr2[2] = 3;
        arr2[3] = 4;
        arr2[4] = 5;
 
        // accessing the elements
        // of the specified array
        for (int i = 0; i < arr2.length; i++)
            System.out.println("Array from method 2: "
                               + arr2[i]);
    }
}
Producción

Array from method 1: 10
Array from method 1: 20
Array from method 1: 30
Array from method 1: 40
Array from method 1: 50

Array from method 2: 1
Array from method 2: 2
Array from method 2: 3
Array from method 2: 4
Array from method 2: 5

Diferencia entre «int[] a» e «int a[]» para múltiples declaraciones de Array en Java

Al declarar varias arrays en Java al mismo tiempo, el método de declaración es importante y debe seguir la sintaxis adecuada. Si no, dará como resultado errores en tiempo de compilación.

  • Sintaxis correcta para declarar múltiples arrays
int []a, b;

Por ejemplo:

Java

// Program to show array declaration using int[] a, b syntax
 
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        int[] a, b;
        // Here both a and b are integer arrays
        a = new int[3];
        b = new int[4];
        System.out.print("array a: ");
        for (int i = 0; i < 3; i++) {
            a[i] = i;
            System.out.print(a[i] + " ");
        }
        System.out.print("\n");
        System.out.print("array b: ");
 
        for (int i = 0; i < 4; i++) {
            b[i] = i;
            System.out.print(b[i] + " ");
        }
    }
}
Producción

array a: 0 1 2 
array b: 0 1 2 3 
  • Declaración incorrecta de múltiples arrays
int a[], b;
int a, b[];

Ejemplo 1: Ejemplo para mostrar el resultado de la declaración int a[], b .

Al usar el método int a[], b para declarar múltiples arrays en Java, el compilador declarará «a» como una array, mientras que «b» se declarará como una variable entera. Por lo tanto, al acceder a esto, se producirá un error de compilación.

Java

// Program to show array declaration
// using int a[], b syntax
 
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
 
        // While using this method to declare
        // multiple arrays in Java,
        // the compiler will declare a as an array,
        // whereas b will be declared
        // as an integer variable
        // Hence while accessing this
        // will give compiler error
        int a[], b;
 
        b = new int[4];
        a = new int[3];
        System.out.print("array a: ");
        for (int i = 0; i < 3; i++) {
            a[i] = i;
            System.out.print(a[i] + " ");
        }
        System.out.print("\n");
        System.out.print("array b: ");
 
        for (int i = 0; i < 4; i++) {
            b[i] = i;
            System.out.print(b[i] + " ");
        }
    }
}

Mensajes de error de tiempo de compilación:

prog.java:19: error: incompatible types: int[] cannot be converted to int
        b = new int[4];
            ^
prog.java:30: error: array required, but int found
            b[i] = i;
             ^
prog.java:31: error: array required, but int found
            System.out.print(b[i] + " ");
                              ^
3 errors

Ejemplo 2: Ejemplo para mostrar el resultado de la declaración int a, b[] .

Al usar el método int a, b[] para declarar múltiples arrays en Java, el compilador declarará «a» como una variable entera, mientras que «b» se declarará como una array entera. Por lo tanto, al acceder a esto, se producirá un error de compilación.

Java

// Program to show array declaration
// using int a, b[] syntax
 
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
 
        // While using this method to declare
        // multiple arrays in Java,
        // the compiler will declare a as an array,
        // whereas b will be declared
        // as an integer variable
        // Hence while accessing this
        // will give compiler error
        int a, b[];
 
        b = new int[4];
        a = new int[3];
        System.out.print("array a: ");
        for (int i = 0; i < 3; i++) {
            a[i] = i;
            System.out.print(a[i] + " ");
        }
        System.out.print("\n");
        System.out.print("array b: ");
 
        for (int i = 0; i < 4; i++) {
            b[i] = i;
            System.out.print(b[i] + " ");
        }
    }
}

Mensajes de error de tiempo de compilación:

prog.java:19: error: incompatible types: int[] cannot be converted to int
        b = new int[4];
            ^
prog.java:30: error: array required, but int found
            b[i] = i;
             ^
prog.java:31: error: array required, but int found
            System.out.print(b[i] + " ");
                              ^
3 errors

Diferencia entre «int[] a» e «int a[]» para arreglos multidimensionales en Java

Para arrays multidimensionales, en Java, no hay diferencia y cualquiera de las sintaxis mencionadas se puede usar para la declaración.

Por ejemplo:

Java

public class multiDimensional {
    public static void main(String args[])
    {
        // Syntax 1
        // declaring and initializing 2D array
        int[][] arr1
            = { { 2, 7, 9 }, { 3, 6, 1 }, { 7, 4, 2 } };
 
        // printing 2D array
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++)
                System.out.print(arr1[i][j] + " ");
 
            System.out.println();
        }
        System.out.println();
 
        // Syntax 2
        // declaring and initializing 2D array
        int arr2[][] = { { 10, 20, 30 }, { 40, 50, 60 } };
 
        // printing 2D array
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++)
                System.out.print(arr2[i][j] + " ");
 
            System.out.println();
        }
    }
}
Producción

2 7 9 
3 6 1 
7 4 2 

10 20 30 
40 50 60 

¿Cuál es la sintaxis más preferida entre «int[] a» e «int a[]» para declarar una array?

  • Sin embargo, no hay diferencia en la funcionalidad entre ambos tipos de declaración. Ambos declaran una array de enteros, por lo tanto, no hay conclusión sobre qué estilo es más preferible, int[] a es la sintaxis preferida para declarar una array en Java, mientras que int a[] se incluyó para ayudar a los programadores tradicionales de C/C++.
  • Técnicamente, ambas sintaxis son las mismas en el caso de declarar una sola array. Pero ambas declaraciones dan resultados diferentes si declaramos varias arrays en una sola declaración.

Publicación traducida automáticamente

Artículo escrito por sachin801 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *