Esta é a minha primeira mensagem… E gostaria de dizer gostei muito deste site, pois tem uma comunidade mutio atuante. Todos vocês estão de parabéns.
Bem, a questão que vou colocar aqui é em relação a classe String. Gostaria de saber por que as Strings não são tipos primitivos? Apesar dos benefícios do pool de strings, a possibilidade de ultizar a classe StringBuffer e tudo mais; não seria mais pertinente se a SUN implementado Strings como tipo primitivo?
[quote=cv]Seria muito mais pertinente nao ter nada como tipo primitivo
Se vc olhar a implementacao da String (no src.zip, que vem com a JDK), vai ver que boa parte do codigo esta escrito em Java, ao inves de nativo.[/quote]
Mas nao ter nada como tipo primitivo estressaria demais o gabarge collection… e acredito que reduziria a performace das aplicacoes java.
E tbm tem o fato de ser haver tipos primitivos para tudo (interios, float, boolen, etc) mesmos para string. Acredito que a SUN deva ter um bom motivo para isso… mas qual? realmente eu nao sei.
[quote=cv]Seria muito mais pertinente nao ter nada como tipo primitivo
Se vc olhar a implementacao da String (no src.zip, que vem com a JDK), vai ver que boa parte do codigo esta escrito em Java, ao inves de nativo.[/quote]
Mas nao ter nada como tipo primitivo nao estressaria demais o garbage collection? E acredito que reduziria a performance das aplicacoes java.
E tbm tem o fato de haver tipos primitivos para tudo (inteiros, float, boolean, etc) menos para string. Acredito que a SUN deva ter um bom motivo para isso… mas qual?
Inicialmente, os tipos primitivos serviram pra aumentar a performance, mas hoje em dia o HotSpot da conta do recado sem depender taaaanto assim dos primitivos.
Depois, se esse eh o motivo, String no fundo no fundo eh soh um wrapper com alguns metodos a mais em cima de um char[]
Eu me lembro daquelas implementações antigas do Basic (TRS-80) em que só havia dois tipos - ponto flutuante e string, e uma estrutura de dados - arrays - e havia algo parecido com “garbage collection” de strings. (Volta e meia os programas grandes em Basic davam uma “paradinha” para “recompactar” a memória, ou seja, remover as strings que não eram mais utilizadas.)
Não é porque um tipo é primitivo ou não que não deva participar de “garbage collection”.