Primeiramente, eu queria agradeceeeer, porque é meu primeiro post aqui no GUJ. Espero que eu colabore com o conteúdo do fórum e que eu encha muito o saco de vocês aí!!!
Bem, vamos ao que interessa antes que eu comece a falar sobre o aquecimento global e me esqueça do conteúdo do Post, hehehe!!!
Bem, vamos falar sobre um Array. Eu tenho esse exemplo abaixo:
int n[] = new int[10];
int n[] é uma matriz de Tipo Primitivo, Correto?
Se int n[n] é um tipo primitivo, porque ele é instanciado por new int[10] ?
Se eu não me engano, a palavra chave new é a chamada do construtor de uma determinada classe, mas int não é uma classe, e sim, um tipo primitivo.
Errado, isso é um array, e não um array de array, para ser um array de array (matriz) deveria ser:
int [][] n = new int[10][10];
Você está certo, new chama o construtor da classe, porém está errado ao dizer que o int[] é um tipo primitivo, array’s em java são sempre objetos, mesmo que cada posição seja um tipo primitivo, nesse caso um int, ou seja, int[] é um objeto e int[0] retorna um primitivo int.
Um array não é uma matriz? Para um array ser uma matriz, ele tem de ser bidimensional?
Então, o certo na declaração não seria assim:
int n[] = new Array[10]
Porque se eu não me engano, a assinatura de instanciação é a seguinte:
Então:
[quote]int - Tipo do Objeto
n - Nome da Variavel
[] - O que define que ela é um Array
new - Chamada do Construtor
int[10] - Definição do Objeto de Refêrencia[/quote]
E outra, se o int é um objeto, o certo não seria Integer?
Um array não é uma matriz? Para um array ser uma matriz, ele tem de ser bidimensional?
[/quote]
Sim! Uma matriz é uma formar de tentar imaginar um array bidimensional.
[quote=Jaba]
Então, o certo na declaração não seria assim:
int n[] = new Array[10]
Porque se eu não me engano, a assinatura de instanciação é a seguinte:
Então:
[quote]int - Tipo do Objeto
n - Nome da Variavel
[] - O que define que ela é um Array
new - Chamada do Construtor
int[10] - Definição do Objeto de Refêrencia[/quote]
E outra, se o int é um objeto, o certo não seria Integer?[/quote]
Ok, você pode usar ‘int [] n’ ou ‘int n[]’, porém a Sun recomenda que as declarações de Array venha após seu tipo, logo seria “int [] n”. Quanto ao seu tipo ser wrapper ou tipo primitivo, depende da sua aplicação, o Array é um objeto e não seu conteúdo, eu particularmente prefiro usar wrappers, mas isso vai de cada casp, aki no sistema q trabalho por exemplo, já tem coisa pronta q usa int[], invés de Integer[], opção de quem implementou, uma coisa interessante a se observar e que quando vc instancia um Array, suas posições são setados para valores default. No caso de ‘int’ ele seta cada posição para ‘0’ e para objetos, no caso ‘Integer’, ele seta todas as posições para null.
Um pouco mais de atenção por favor - cuidado com o dogmatismo (ou seja, seguir exatamente o que está escrito ou o que lhe falaram); se você quiser ser dogmático, leia a “Java Language Specification”, que é a referência absoluta para a linguagem.
int[] é diferente de int - int[] representa o tipo da classe “array de int” (um objeto, como os outros), e int representa o tipo inteiro de 32 bits (um tipo primitivo).
A única diferença entre uma classe normal (por exemplo, java.io.File) e uma classe do tipo array é, basicamente, seu nome interno (no caso de java.io.File, o nome interno é “Ljava/io/File;” e no caso de um array de int, o nome interno é “[I”) e os métodos que são suportados. No caso de uma classe do tipo array, ela pode conter elementos que são primitivos ou elementos que são objetos.
Não há no Java uma classe que se chame “java.lang.Array” que seja uma classe “pai” de todos os arrays (no .NET existe uma classe dessas). Em vez disso, todos os arrays herdam diretamente de java.lang.Object.
[quote=thingol]Um pouco mais de atenção por favor - cuidado com o dogmatismo (ou seja, seguir exatamente o que está escrito ou o que lhe falaram); se você quiser ser dogmático, leia a “Java Language Specification”, que é a referência absoluta para a linguagem.
int[] é diferente de int - int[] representa o tipo da classe “array de int” (um objeto, como os outros), e int representa o tipo inteiro de 32 bits (um tipo primitivo).
A única diferença entre uma classe normal (por exemplo, java.io.File) e uma classe do tipo array é, basicamente, seu nome interno (no caso de java.io.File, o nome interno é “Ljava/io/File;” e no caso de um array de int, o nome interno é “[I”) e os métodos que são suportados. No caso de uma classe do tipo array, ela pode conter elementos que são primitivos ou elementos que são objetos.
Não há no Java uma classe que se chame “java.lang.Array” que seja uma classe “pai” de todos os arrays (no .NET existe uma classe dessas). Em vez disso, todos os arrays herdam diretamente de java.lang.Object.
[/quote]
Não tinha visto o “new Array[]”, deveria ter respondido isso tb, fora isso, eu não falei nada de errado, disse? Não falei q int[] e int são iguais