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

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

é final

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

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.

[quote=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.[/quote]

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

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

[quote=faeldix][quote=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.[/quote]

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

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!

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

[code]/*

  • 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());

    }
    }
    [/code]

resultado

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

Pq nao aconteceu o mesmo? oO’’ Tipo

[quote]inputout.NewClass@19821f
inputout.String@xxxxx[/quote]

???

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??

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.