Questão CESPE que eu queria ANULAR

Galera eu fiz um concurso domingo e caiu um código em JAVA e algumas questões, olhem só essa afirmativa.

O tipo ArrayList, que implementa uma lista utilizando um array, emprega uma estrutura linear com contiguidade.

Eu marquei errada pq nunca ouvi falar que um arraylist era implementado com array. Que peguei o gabarito vi que essa afirmativa tava verdadeira.
Será que é verdadeiro mesmo, lendo o javadoc da SUN não vi nada sobre isso. Se alguem concordar comigo passem materia para eu entrar com recurso, por favor.

Tinha outra também, olhem só

String é um tipo de dados estruturado.

Eu abarquei falso, chegou no gabarito era verdadeiro. Alguém discorda?

Infelizmente você realmente errou as duas questões.

Na primeira questão, o ArrayList realmente implementa um array dinâmico para que o programador não precise se preocupar em pré-alocar o tamanho real do array. No código-fonte, ele usa um array normal de Java para guardar os dados na mesma ordem em que foram inseridos, logo é uma estrutura linear com contiguidade.

Na segunda questão, é uma típica pegadinha de concurso público. Uma classe Java nessas provas de concurso sempre são associadas a tipos estruturados, numa clara alusão aos structs de C e records de Pascal. String é uma classe dentro da linguagem Java e portanto, é um tipo de dados estruturado.

Não fique triste, també já cai um monte nessas questões de concurso até aprender a como lidar com elas.

Cara essa do array é revoltante, os dados estão encapsulados. Teoricamente eu nao deveria me preocupar com a forma que um ArrayList é implementado isso é abstrato para mim.
Achei um código fonte de ArrayList http://developer.classpath.org/doc/java/util/ArrayList-source.html

Essa do tipo estruturado é fod… String é um objeto, mas fazer oq é so se conformar mesmo.

Valeu

Não, String não é um objeto. String é uma classe !

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

String é um objeto… ela fica no Heap e tudo mais!

String é uma classe. As instâncias de uma classe é que são os objetos.

Portanto, se o código for assim:

String palavra = ""

String é a classe e palavra é o objeto.

é … isso mesmo. A referencia fica na pilha e o objeto no heap.

e onde a String é um objeto ?

[quote=alexandremlima]String é uma classe. As instâncias de uma classe é que são os objetos.

Portanto, se o código for assim:

String palavra = ""

String é a classe e palavra é o objeto.[/quote]

Errado…

String é a classe.
palavra é uma referência a um objeto do tipo String, mas o objeto mesmo só será criado quando vc utilizar…

palavra = new String();

palavra = " " é uma maneira implícita de chamar palavra = new String(" ");

Quase certo…
String, de fato, é a classe. Porém, palavra, embora comumente digamos que seja uma referência, não é! :shock:
Recentemente respondi um tópico no fórum da sun e, a duras penas, aprendi alguns detalhes bem sacanas:
No nosso caso aqui, palavra é uma variável de referência (reference variable), e não uma referência propriamente dita. Temos variáveis de referência e variáveis primitivas (primitive variables).
Suponha isso aqui:

int idade;
String nome;

Eu achava que idade fosse uma referência de tipo int e que nome fosse uma referência de tipo String. Mas eu estava utilizando a terminologia de forma errada… Como o cara que me corrigiu lá no fórum da sun disse:

O negócio fica assim: palavra é uma variável, cujo valor é uma “referência para String”. Esta referência “aponta” para um objeto String na memória (no heap).

[color=blue]Dêm uma olhada no tópico em que (quase) fui esculachado por conta desse tema sacana[/color]
:lol: O meu post é o reply 44. Podem dar uma lida até o post 48, dando atenção ao post 46 (onde eu me lasco…)
Agora, quanto a isso aqui:

[quote=clodoaldoaleixo][…], mas o objeto mesmo só será criado quando vc utilizar…

palavra = new String(); [/quote]
Assino embaixo do que o maquiavelbona disse.