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

    primissima classe, chiarimento

    Salve, sto tentando di creare una classe che ne richiama altre, per cercare di capire come funzionano questi passaggi in java.

    ho scritto questo:
    codice:
    class c
    {
      public static String c()
      {
        String stringa = "LA STRINGA";
        return stringa ;
       
      }
    }
    
    
    class d
    {
      public static void main(String[] args)
      {
        c xx=new c();
    	System.out.print(xx);
      }
    }
    ora accade che quando vado a eseguire "java d" mi ritorna una stringa stranissima, stessa cosa accade che al posto di return stringa scrivo return "LA STRINGA".
    Sono così maledettamente attraente...

    QuickChat. (Asp e ajax)

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: primissima classe, chiarimento

    Originariamente inviato da saltodifondi
    Salve, sto tentando di creare una classe che ne richiama altre, per cercare di capire come funzionano questi passaggi in java.

    ho scritto questo:
    codice:
    class c
    {
      public static String c()
      {
        String stringa = "LA STRINGA";
        return stringa ;
       
      }
    }
    
    
    class d
    {
      public static void main(String[] args)
      {
        c xx=new c();
    	System.out.print(xx);
      }
    }
    ora accade che quando vado a eseguire "java d" mi ritorna una stringa stranissima, stessa cosa accade che al posto di return stringa scrivo return "LA STRINGA".
    quella stringa stranissima è l'oggetto xx, per stampre stringa devi passare xx.c()
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    Credo tu stia stampando il riferimento alla classe, ovvero xx e non la stringa della classe c.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: primissima classe, chiarimento

    Originariamente inviato da saltodifondi
    ora accade che quando vado a eseguire "java d" mi ritorna una stringa stranissima, stessa cosa accade che al posto di return stringa scrivo return "LA STRINGA".
    No. Nella classe 'c' hai semplicemente definito un metodo statico chiamato 'c' (che non centra nulla però con il nome della classe!) e che non viene di certo usato quando crei una istanza della classe 'c' nel main!!
    E il print() di un oggetto causa la invocazione del toString() sull'oggetto e visto che non ne hai fatto l'override, rimane la implementazione definita in Object, che fornisce quella stringa che tu hai definito "stranissima".

    Quindi ... cosa volevi fare? Invocare il metodo c della classe c e stampare la stringa? Allora non serve istanziare c (il metodo l'hai fatto statico). Volevi istanziare c e fare in modo che il print dell'oggetto stampasse "LA STRINGA"?? Allora fai l'override di toString() per far tornare la stringa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    MIlle grazie per i vostri interventi, inizio a capire.

    adesso sono in questa situzione:

    codice:
    class c
    {
      public static String prova()
      {
        String stringa = "LA STRINGA";
        String x,y;
        x = stringa;
        y = x.replace("A","O");
        return y;
       
      }
    }
    
    
    
    
    
    class d
    {
      public static void main(String[] args)
      {
        
    	System.out.print(c.prova());
      }
    }

    come vedete ci sono x e y, pronte là. vorrei che fossero restituite in modo da poterle richiamare con c.prova().x e c.prova().y.

    ho provato con return {x,y} nella classe prova, ma ovviamente non va.
    Sono così maledettamente attraente...

    QuickChat. (Asp e ajax)

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da saltodifondi
    come vedete ci sono x e y, pronte là. vorrei che fossero restituite in modo da poterle richiamare con c.prova().x e c.prova().y.

    ho provato con return {x,y} nella classe prova, ma ovviamente non va.
    Un metodo può ritornare solo 1 valore di un tipo .... se però tu fai ritornare un oggetto che ha diverse proprietà o un array, beh è un altro conto. Ma il valore di ritorno tecnicamente è sempre 1 solo.

    Se vuoi far ritornare un array contenente 2 String ok, va bene. Ma non basta fare return {x,y}; come hai fatto tu perché quella non è la sintassi corretta per istanziare un array!!

    return new String[] { x, y };

    Questo è corretto e crea quello che viene chiamato un "anonymous" array (appunto perché non ha nome ... lo istanzi e ritorni "al volo").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ancora grazie, ma a questo punto il Prova non mi restituisce più una stringa come dichiarato prima... public static String prova()

    come cambia la dichiarazione quando invece di una stringa ho un array come valore di ritorno?

    e poi per richiamarlo si usa c.prova()[1]? o cosa....
    Sono così maledettamente attraente...

    QuickChat. (Asp e ajax)

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da saltodifondi
    come cambia la dichiarazione quando invece di una stringa ho un array come valore di ritorno?

    e poi per richiamarlo si usa c.prova()[1]? o cosa....
    Il metodo deve dichiarare come tipo di ritorno String[] ovviamente. Dove invochi il metodo ti conviene assegnare il valore ad una variabile ... altrimenti dovresti invocare 2 volte il metodo. I due valori li prendi usando un apposito indice nell'array, cioè [0] e [1]. Non certo x e y.

    Se dove invochi il metodo volevi usare x e y come nomi per accedere ai due valori (che però non centrano nulla con le variabili locali in prova()) allora si può fare ma non con un array. Bensì con un "oggetto" di una tua classe che ha i campi x e y.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    ok, ho creato la mia prima classe. adesso vorrei creare un file dal quale possa essere lanciata. cercando ho letto di come creare un file jar, o un bat.

    sono riuscito a creare dal command il file jar, ma quando lo lancio ricevo errori o relativi al percorso della classe o relativi a ciò che c'è scritto dentro la mia classe.
    però quando lancio la classe (javac test.java -> java B) accade quello che deve accadere, senza intoppi o errori di sorta.

    comunque, sono in questa fase: ho il file test.java che contiene le classi A e B, dove B è la principale (main) che dovrebbe essere lanciata.

    come faccio, partendo da questo file java, a creare un file .class, un .jar o .bat?
    Sono così maledettamente attraente...

    QuickChat. (Asp e ajax)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.