Porque?

5 respostas
faicoxim
class Books
{
	String title;
	String author;
}
class BooksTestDrive
{
	public static void main (String args[])
	{
		Books[] myBooks = new Books[3];
		myBooks[0] = new Books(); // cria objetos Books
		myBooks[1] = new Books();
		myBooks[2] = new Books();
		
		myBooks[0].title = "as";
		myBooks[1].title = "df";
		myBooks[2].title = "gh";
		
		myBooks[0].author = "bob";
		myBooks[1].author = "sue";
		myBooks[2].author = "ian";
		int x = 0;
		while (x < 3)
		{
			System.out.println(myBooks[x].title);
			System.out.println(" by ");
			System.out.println(myBooks[x].author);
			x = x + 1;
		}
	}
}
class TestArrays
{
	public static void main (String args[])
	{
		int[] index = new int[4];
		
		index[0] = 1;
		index[1] = 3;
		index[2] = 0;
		index[3] = 2;
		
		String[] islands = new String[4];
			
		islands[0] = "Bermuda";
		islands[1] = "Fiji";
		islands[2] = "Azores";
		islands[3] = "Cozumel";
		
		int y = 0;
		int ref;
		
		while (y < 4)
		{
			ref = index[y];
			System.out.println("Island = ");
			System.out.println(islands[ref]);
			y = y + 1;
		}
	}
}

Porque no primeiro código o livro pede pra criar os objetos Books e no segundo código não pede pra criar os objetos islands??

5 Respostas

rafaelglauber

Oi,

Seu segundo exemplo o array é de int um tipo primitivo. Não se instância tipos primitivos, no seu primeiro exemplo seu array é composto de Books logo é necessário criar esses objetos caso queira dar alguma utilidade a seu array.

B

faicoxim:

islands[0] = "Bermuda"; islands[1] = "Fiji"; islands[2] = "Azores"; islands[3] = "Cozumel";

Porque no primeiro código o livro pede pra criar os objetos Books e no segundo código não pede pra criar os objetos islands??

Como assim? islands são objetos String.

dreamspeaker

Sim, são objetos Strings, e a lógica é a mesma. Com String você não precisa fazer new String().

Aliás, você não deve fazer. Vai criar objetos a toa.

Quando vc fez...

myBooks[0].title = "as";  
myBooks[1].title = "df";  
myBooks[2].title = "gh";  
           
myBooks[0].author = "bob";  
myBooks[1].author = "sue";  
myBooks[2].author = "ian";
... você também não deu nenhum new, porque os dois atributos são String.
Fabio_Kym_Nascimento

Strings em Java são objetos também, não existe tipo primitivo String em Java…

Você não precisou dar new porque o Java faz pra você, se não me engano chama autoboxing.

String palavra = "texto qualquer";

é o mesmo que

String palavra = new String(); palavra = "texto qualquer";

Lembrando que Strings em Java são imutáveis, ou seja, seus valores não mudam.

peczenyj

String palavra = "oi, eu sou um objeto string"; // duvida ? String PALAVRA = "oi, eu sou um objeto string".toUpper();

Criado 7 de outubro de 2008
Ultima resposta 7 de out. de 2008
Respostas 5
Participantes 6