Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    static String format( String format, object... args)

    Sto iniziando a vedere la libreria del package java.lang.
    ho applicato alcuni comandi per capire come funzionassero...
    ora però mi imbatto in questo
    static String format( String format, object... args)
    e non riesco a capire.
    Qualcuno mi può fare qualche esempi opratico?
    grazie.
    ho visto su internet ma continuo a non capire

  2. #2
    da quello che riesco a capire formatta una stringa ma come?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    RTFM Read That F*** Manual!!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280
    La funzionalità di "formattazione" delle stringhe è stata introdotta a partire da Java 5 e sfrutta, tra le altre cose, anche un'altra feature di Java 5 che sono i metodi "varargs" (metodi con numero variabile di argomenti). format/printf sono appunto metodi varargs, cioè accettano un numero arbitrario di argomenti.

    Il metodo format è stato aggiunto in diverse classi: String, PrintStream, PrintWriter, Console (introdotta da Java 6) e java.util.Formatter che è la classe che fa da "motore" per la formattazione delle stringhe (usata "dietro le quinte" dalle altre classi citate).

    In alcune classi es. PrintStream/PrintWriter/Console è stato aggiunto anche printf. Banalmente printf fa nient'altro che invocare direttamente format, passando tutto pari-pari. printf è stato aggiunto più che altro per rendere più "amichevole" la cosa a chi proviene dal "C", dove printf è la più conosciuta e principale funzione di I/O della libreria standard del C.

    format/printf riceve un String che è la stringa di formato e poi un numero arbitrario di oggetti. Si possono anche passare tipi primitivi, che vengono automaticamente convertiti nel corrispondente oggetto della classe wrapper (es. int -> Integer), tramite autoboxing.

    La stringa di formato può contenere testo normale ma anche dei particolari specificatori di formato che hanno un significato speciale e permettono di formattare un valore in modo più specifico.

    codice:
    String nome = "Mario";
    String cognome = "Rossi";
    int numAutomobili = 3;
    
    String msg = String.format("La persona %s %s ha il seguente num. di automobili: %d", nome, cognome, numAutomobili);

    Dove %s indica un argomento da inserire come stringa mentre %d indica un valore intero stampato in base 10 (decimale).

    In msg c'è la stringa "La persona Mario Rossi ha il seguente num. di automobili: 3". Tecnicamente sarebbe uguale a fare, con la concatenazione delle stringhe:

    codice:
    String msg = "La persona " + nome + " " + cognome + " ha il seguente num. di automobili: " + numAutomobili;

    che tra l'altro è anche un pelino più corta di quella con il format. Ma la vera potenzialità della formattazione è che è possibile utilizzare flag particolari negli specificatori di formato per gestire padding, zeri iniziali e altro.

    codice:
    String msg = String.format("La persona %s %s ha il seguente num. di automobili: %04d", nome, cognome, numAutomobili);

    Il risultato è: "La persona Mario Rossi ha il seguente num. di automobili: 0003"

    %04d vuol dire: formatta il valore intero mettendo zeri iniziali per avere almeno, come minimo, 4 cifre.

    Fare questo con la classica concatenazione delle stringhe sarebbe più lungo/contorto, perché avresti bisogno di farti un metodo apposito che fornisce un String da un int applicando zeri iniziali (in quantità parametrabile) oppure di usare un metodo simile di una qualche libreria esterna.
    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.