Classe String (java.lang.String) é estatica?

8 respostas
faeldix

Visto que nao é necessario estanciar nenhum objeto pra fazer uso dela? :?:

8 Respostas

lucasportela

é final

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

nel

Oi!

String Java 6.

Como o colega acima disse, é final.
E amigo, não custava ter lido a API hein?

O fato de uma classe disponibilizar meios de ser utilizado com método estaticos não signifca que a classe em si seja estática :smiley:
Abraços.

faeldix

nel:
Oi!

String Java 6.

Como o colega acima disse, é final.
E amigo, não custava ter lido a API hein?

O fato de uma classe disponibilizar meios de ser utilizado com método estaticos não signifca que a classe em si seja estática :smiley:
Abraços.

Entao isso é um consenso? Pq a minha duvida é como se usa uma string sem referenciar objetos… pq essa é a minha duvida :lol:

lucasportela

Alguns métodos são estáticos, os que você consegue usar sem instânciar…

se fosse pela sua lógica os Wrappers seriam estáticos.

Veja a API e os métodos que são estáticos, os outros métodos você precisa de uma instância

rael_gc

faeldix:
nel:
Oi!

String Java 6.

Como o colega acima disse, é final.
E amigo, não custava ter lido a API hein?

O fato de uma classe disponibilizar meios de ser utilizado com método estaticos não signifca que a classe em si seja estática :smiley:
Abraços.

Entao isso é um consenso? Pq a minha duvida é como se usa uma string sem referenciar objetos… pq essa é a minha duvida :lol:

String é objeto sim, e você pode trabalhar tanto com:

String a = "a";

quanto com:

String a = new String("a");

A diferença entre eles, é que a primeira forma fica em uma região de memória diferente e pode ser passível de várias otimizações, e provavelmente se você fizer, no mesmo método:

String a = “a”;
String b = “a”;

Você vai ter tanto A quanto B apontando referenciando a mesma “a”. Ou seja, equivalente a:

String a = new String("a"); String b = a;

Se alguém souber explicar melhor, por favor, fique à vontade!

faeldix

quanto eu mais mecho com isso menos eu entendo.. vc falou de memoria eu fiz o seguinte:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package inputout;

/**
 *
 * @author Rafael
 */
public class InputOut {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String x = "a";
        String h = new String();
        h = "a";
        
        NewClass g = new NewClass();
        System.out.println(g.toString());
        
        System.out.println(x.toString());
        System.out.println(h.toString());
        
        
    }
}

resultado

run: inputout.NewClass@19821f a a CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Pq nao aconteceu o mesmo? oO'' Tipo

inputout.NewClass@19821f inputout.String@xxxxx

?????????

gRoOve

Quando uma string é criada assim:

String texto = "a"

ela vai direto para o pool de strings, é uma característica da linguagem, que torna o acesso mais rápido e, tendo em vista que strings são imutáveis, é possível ter várias referencias para mesma string.

Quando é instanciada assim:

String texto = new String("a")

ela vai tanto pro heap quanto para o pool, ou seja, são criadas duas instâncias.

Não entendi tua última dúvida, poderia ser mais claro??

JavaDreams

Olá…

No libro JAVA USE A CABEÇA

explica de A a Z sobre essa classe String,
o porque não precisa dar new nela
e o porque de todas as outras coisas:

Recomendo dar uma olhada lá…

Eu já li ele várias vezes mas o que entendi
é que a JVM já entende que a classe String
é tipo muito utilizada e não precisa dar new para usar ela
além dela também ter os métodos estáticos e etc.

Eu particularmente só aprendi o conceito que o livro queria passar sobre
a parte da JVM e métodos estáticos e tals…

O resto só se vc quiser aprofundar por curiosidade…

aprenda a ideia e use

se apegar aos detalhes pode atrasar as coisas um pouco.

abraço.

Criado 19 de agosto de 2011
Ultima resposta 19 de ago. de 2013
Respostas 8
Participantes 6