Tamanho de objetos array

11 respostas
marciolx

nas duas declarações abaixo o array de objetos criado terá o mesmo tamanho já que nos dois casos eles vão apenas armazenar referências para os objetos dos dois tipos?

Thread arr1 = new Thread[5];

Sbronskly arr2 = new Sbronskly[5];

11 Respostas

cv1

Sim :smiley:

marciolx

ok, obrigado, mais uma dúvida, no código abaixo, quando a linha “esta linha” é executada quantos objetos foram criados na heap no total? 5?

class QualquerCoisa {}

class Base {
    private QualquerCoisa algumaCoisa;
    public Base () {
        algumaCoisa = new QualquerCoisa();
    }
}

public class TesteBase {
    public static void main (String [] args) {
        Base [] b = new Base[2];
        b[0] = new Base();
        b[1] = new Base();
        System.out.println("esta linha");
    }
}
cv1

Na verdade, 6, nessa sequencia:

TesteBase
Base[]
Base
QualquerCoisa
Base
QualquerCoisa

louds

Hmm, onde TesteBase tá sendo instanciado que não reparei?^

Isso são os objetos que voce diretamente instanciou, não esqueça que nesse exemplo existem 1 monte de objetos alocados sem voce perceber:

“essa linha” (String)
args (String[]) e todas String contidas nos array.

Isso sem mencionar os objetos estáticos como System.out

marciolx

comentando a linha com o System.out.println e não passando nenhum argumento na linha de comando, serão 5?

louds

Passando 0 argumentos args vai conter um array de tamanho zero.

marciolx

então só o fato de declarar o parâmetro do método e chamar o método mesmo sem usar o parâmetro um objeto é criado? então são seis no total?

maxguzenski

isso, 5
se tiver estudando pra prova de certificacao so leve em concideracao objetos que tenho um “new” explicito na frente, nao leve em consideracao a thread atual (main) nem os objetos do System

marciolx

“maxguzenski”:
isso, 5
se tiver estudando pra prova de certificacao so leve em concideracao objetos que tenho um “new” explicito na frente, nao leve em consideracao a thread atual (main) nem os objetos do System

5? ok então vamos complicar um pouco:

class QualquerCoisa {} 

class Base { 
    private QualquerCoisa algumaCoisa; 
    public Base () { 
        algumaCoisa = new QualquerCoisa(); 
    } 
} 

public class TesteBase { 
    public static void main (String [] args) { 
        int i, j;
        Base [][] b = new Base[2][]; 
        b[0] = new Base[2]; 
        b[1] = new Base[3]; 
        for (i=0; i<b.length; i++) {
            for (j=0; j<b[i].length; j++) {
                b[i][j] = new Base();
            }
        }
    } 
}

quantos objetos foram criados na heap? 11? :cry: :cry:

maxguzenski

eu contei 13:

1º - Base [][] b = new Base[2][];

2º - b[0] = new Base[2];

3º - b[1] = new Base[3];

4º - b[0][0] = new Base();

5º - ---- algumaCoisa = new QualquerCoisa();

6º - b[0][1] = new Base();

7º - ---- algumaCoisa = new QualquerCoisa();

8º - b[1][0] = new Base();

9º - ---- algumaCoisa = new QualquerCoisa();

10º - b[1][1] = new Base();

11º - ---- algumaCoisa = new QualquerCoisa();

12º - b[1][2] = new Base();

13º - ---- algumaCoisa = new QualquerCoisa();
marciolx

está certo, eu contei um objeto array mas na verdade são 3 :cry: :cry: :cry:, um de duas dimensões e dois de uma dimensão

obrigado!

Criado 18 de agosto de 2003
Ultima resposta 18 de ago. de 2003
Respostas 11
Participantes 4