Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    [java] dichiarazione oggetti

    salve, mi trovo a riprendere in mano java dopo anni, e mi sorge un dubbio che definire banale è poco:
    non esistono in java variabili di tipo String vero?
    quando si crea una "variabile" String questa è un oggetto della classe String.
    Quindi perché basta definire una stringa così:
    codice:
    String saluto = "ciao";
    e non ci vuole la chiamata al costruttore?
    codice:
    String saluto = new String("ciao");

  2. #2
    Perché il literal "ciao" è già di tipo String - ovvero, "ciao" è un oggetto String fatto e finito.

    Per inciso, Java è trattato nell'apposita sezione, dove provvedo a spostare il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    scusami ancora non capisco.
    Se io creassi una classe Frase con due costruttori
    codice:
    public Frase(){
    ..}
    public Frase(String arg){
    ..}
    per creare un oggetto Frase dovrei sempre scrivere
    codice:
    Frase saluto = new Frase("ciao, pippo");
    o potrei usare
    codice:
    Frase saluto= "ciao, pippo";
    ?

  4. #4
    Dovresti chiamare il costruttore: "ciao, pippo" è un oggetto di tipo String, non di tipo Frase, e ovviamente non lo puoi assegnare ad un riferimento a Frase.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    e se Frase estende la classe String? non c'entra?

  6. #6
    Non si potrebbe comunque, non puoi assegnare un oggetto di tipo classe base ad un riferimento ad una classe derivata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jimbo0 Visualizza il messaggio
    e se Frase estende la classe String?
    String è una classe final, non si può estendere.

    Quello che spero hai già capito, è che String è "speciale", anche per il fatto che il linguaggio prevede la apposita sintassi per definire stringhe "literal", ovvero letterali nel sorgente. Cosa che non puoi fare con tue classi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    insomma la risposta è che String è una classe speciale grazie

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jimbo0 Visualizza il messaggio
    String è una classe speciale
    Non è tanto tanto la classe String in sé ad essere "speciale". Nel senso che String è una normalissima classe marcata final, che implementa alcune interfacce e ha tutta la logica per operare sulla sua sequenza di caratteri. Una classe con questa logica potrebbe scriverla (quasi) chiunque ("quasi" relativo al fatto che bisogna conoscere molto bene lo standard Unicode e altro).

    È proprio il supporto che viene dato alle stringhe da parte del linguaggio, del compilatore e della JVM che è "speciale". Ad esempio il fatto di poter usare la concatenazione delle stringhe, strA+strB, poiché questo viene interpretato dal compilatore che genera sotto sotto del codice per questo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.