Visto que nao é necessario estanciar nenhum objeto pra fazer uso dela? :?:
Oi!
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
Abraços.
[quote=nel]Oi!
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
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!
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
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.