Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    913

    [java]Letterali stringa...

    salve, volevo sapere, sapendo che posso usare i metodi degli oggetti stringa direttamente sui letterali stringa(e non sul suo reference quindi), se io scrivo:

    System.out.println("Ciao".lenght()); ---> il metodo lenght come fa a sapere su quale letterale stringa andare ad operare, visto che io potrei avere piu di un reference ad un oggetto stringa con quel contenuto(valore dell'attributo) "ciao" ?


    Un'altra cosa; ho visto scritto questo per l'uso del metodo stringa "concat" e poi per l'operatore di concatenazione "+"

    1) String s = "Parola1".concat("Parola2").concat("Parola3");
    e anche (stessa cosa ma con l'operatore di concatenazione)
    2) String s = "Parola1" + "Parola2" + "Parola3";

    Vedendo quanto sopra, e sapendo che String s = new String("Parola1"); equivale a String s = "Parola1"; (nella forma letterale stringa) , mi chiedo è allora possibile applicare i metodi stringa sull'oggetto stringa direttamente in fase di creazione dell'oggetto stringa stesso? :master:

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non ho ben capito qual'è il tuo problema, visto che non capisco cosa tu intenda per "letterale"... comunque, vediamo di tentare di fare un po' d'ordine:

    quando io scrivo "Ciao".length() io intendo applicare il metodo length() all'oggetto stringa "Ciao". Questa può essere vista come una costante (in realtà, è una costante). La costante che possiede 4 caratteri.

    Quando scrivo, quindi, System.out.println("Ciao".length()) non ha nessuna importanza quanti oggetti String io abbia istanziato con la scritta "Ciao"... quel metodo viene applicato a quella particolare costante.

    Poi, non è affatto la stessa cosa scrivere

    String miaStringa1 = new String("Ciao");

    oppure scrivere

    String miaStringa2 = "Ciao".

    La prima fa in modo di creare un oggetto nello heap contenente la scritta "Ciao" e alloca un puntatore nello stack a quell'oggetto, indicato dalla variabile miaStringa1.
    La seconda, invece, alloca nello stack 4 caratteri individuati dalla variabile miaStringa2 (in un certo senso).
    Se, infatti, proviamo ad applicare l'operatore di confronto binario == al primo oggetto, per confrontarlo con la costante "Ciao" ci verrà restituito un valore false, mentre nel secondo caso avremo un true:

    (miaStringa1 == "Ciao") --> false
    (miaStringa2 == "Ciao") --> true

    Il fatto è che, in Java, sia una costante stringa, sia un oggetto String sono entrambi visti come un oggetto. Per questo, sia ad un oggetto creato con new, sia ad una costante creata con l'uso delle virgolette, è possibile applicare i metodi di String.

    Non capisco l'ultima domanda... potresti riformularla? :master:


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.