Array Bidimencional X Vector

Tenho uma dúvida bem simples (eu acho que é simples):

String dados[][] e String[][] dados são a mesma coisa ou não?

Se não forem, o que é cada um?

Desde já agradeço a todos que me ajudarem.

Olá, Macksuel!

Sim, são a mesma coisa. O que muda é a forma de declaração!

[]'s

Então em metodos que passam como atributo a forma dois (String[][] dados) eu posso passar um na forma um (String dados[][])?

Sim!

Faça o teste em algum compilador Java, e assim você comprovará o resultado!

[]'s

Teste assim:


public class Main {

   public static void main(String[] args) {
   
      String[][] aa = new String[5][5];
      String bb[][] = new String[5][5];

      if (aa.equals(bb)) {

         System.out.println("Foi!");
      }

      
   }
}

[quote=Nicolas Fernandes]Teste assim:

[code]

public class Main {

public static void main(String[] args) {

  String[][] aa = new String[5][5];
  String bb[][] = new String[5][5];

  if (aa.equals(bb)) {

     System.out.println("Foi!");
  }

}
}

[/code][/quote]

O que vc quiz dizer com teu código? Chegasse a rodar? rsrs
Simplesmente irá rodar e não imprimir notinhg… :lol: :lol:

Por convenção.

Muita gente defende que é mais claro usar o [][] perto do tipo de dado, já que é ao tipo que ele se refere.

// O programa a seguir prova que você pode 
// Entretanto, é meio sinistro você declarar os colchetes antes e depois da variável, ou pior ainda, antes
// e depois da declaração do método. 

class SintaxeArrayArray {

    // recomendado
    String[][] retorna1 () {
        return new String[10][20];
    }
    // sinistro - você acha que o método retorna uma String[], não uma String[][]
    String[] retorna2 ()[] {
        return new String[10][20];
    }
    // sinistro - você acha que o método retorna uma String, não uma String[][]
    String retorna3 ()[][] {
        return new String[10][20];
    }

    public static void main (String[] args) {
        SintaxeArrayArray saa = new SintaxeArrayArray();
        String [][]aa1 = saa.retorna1();
        String []aa2[] = saa.retorna2();
        String aa3[][] = saa.retorna3();
        System.out.println (aa1.getClass().getName()); // imprime "[[Ljava.lang.String;"
        System.out.println (aa2.getClass().getName()); // imprime "[[Ljava.lang.String;"
        System.out.println (aa3.getClass().getName()); // imprime "[[Ljava.lang.String;"
        System.out.println (aa1.getClass() == aa2.getClass() && aa2.getClass() == aa3.getClass()); // imprime "true"
    }
}