Visualizzazione dei risultati da 1 a 10 su 11

Hybrid View

  1. #1

    Inizio Java...ma perchè complicarsi la vita

    salve, sto imparando il java arrivando da php,javascript,visual basic,etc.. e sto scrivendo le prime righe di codice e mi imbatto su un qualcosa ancora sconosciuto che vedo solo come un complicars la vita!

    codice:
    class Prova {
        
        int [] a;
        
        
        public static void main(String[] arg){
            
            int [] b;
            a[0]=1;
            
            System.out.println(a[0]);
        }
    }
    so che la main è la parte che viene avviata della classe, quindi credvo di creare una variabile di instanza a definita per la classe Prova e assegnargli un valore . Ho provato in 12 modi diversi e noto che una stupidità negli altri linguaggi è per java un muro invalicabile

    scherzo, ma mi manca di capire dove e perchè mi dice sempre "errore...errore" .
    quello che ho trovato assurdo nei vari tentatvi e vedere che la clausosa "this" non la digerisce dentro main (cosa normalissima in altri linguaggi nella definizione delle classi)

    chi mi aiuta a illuminarmi e magari affezionarmi a questo linguaggio?
    Luca Bottoni's World
    www.bottonisworld.com

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    mi imbatto su un qualcosa ancora sconosciuto che vedo solo come un complicars la vita!

    codice:
    class Prova {
        
        int [] a;
        
        
        public static void main(String[] arg){
            
            int [] b;
            a[0]=1;
            
            System.out.println(a[0]);
        }
    }
    Non è affatto un "complicarsi la vita" ... è che non hai (ancora) le basi sul linguaggio. La variabile 'a' è una variabile "di istanza", ovvero è associata a ciascuna istanza di Prova. Nel main sei in un metodo static e non hai alcun oggetto Prova. Anche se istanziassi un oggetto Prova, la variabile di istanza 'a' avrebbe valore null ovvero non punta ad alcun array. Gli array sono oggetti e vanno istanziati specificando la dimensione dell'array.

    Consiglio: prendi/segui un buon valido libro su Java partendo dalle basi. Il fatto che sai php/javascript/ecc... vuol dire relativamente poco.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Consiglio: prendi/segui un buon valido libro su Java partendo dalle basi. Il fatto che sai php/javascript/ecc... vuol dire relativamente poco.
    Walter Savich..900 pagine Però alcuni concetti sono spiegati a distanza di 5/7 capitoli e quindi hai domande che ti poni e che magari il libro non sà spiegare come uno comprende
    Luca Bottoni's World
    www.bottonisworld.com

  4. #4
    dimenticavo (scusa)..grazie andbin
    Luca Bottoni's World
    www.bottonisworld.com

  5. #5
    Scusa andbin,
    ma proprio mi sfugge la complessità data alla semplicità (giuro in perl,vb,vba, etc.. ma i avuto così tanti problemi a iniziare con le ovvietà )non sò java ma non mi fà partire..partito poi vado, ma se non ingrano...ti mostro questo:
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int[];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    gli errori sono...

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    Syntax error on token "b", VariableDeclaratorId expected after this token
    b cannot be resolved to a type
    Illegal modifier for parameter $missing$; only final is permitted
    Variable must provide either dimension expressions or an array initializer
    b cannot be resolved to a variable
    b cannot be resolved to a variable

    at prova.ProvaParametriArray.main(ProvaParametriArray .java:10)
    e non dire..non hai capito..per ora dico che la semplicità non è sinonimo di java (con ironia e voglia di imparare lo dico)


    correzione...prova 2

    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int [1];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    ma ci mancherebbe che funzioasse

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:
    b cannot be resolved to a variable
    b cannot be resolved to a variable
    b cannot be resolved to a variable

    at prova.ProvaParametriArray.main(ProvaParametriArray .java:10)
    Ultima modifica di lbottoni; 03-12-2014 a 21:28
    Luca Bottoni's World
    www.bottonisworld.com

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int[];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    Qui sono sbagliate 2 cose, primo non dichiari la proprietà statica nella classe ne un array locale quindi b è indefinito, secondo non dichiari la grandezza dell'array.

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    codice:
    class ProvaParametriArray {
        
        //int [] a;
        
        
        public static void main(String[] arg){
            
            b= new int [1];
            b[0]=1;
            
            System.out.println(b[0]);
        }
        
    }
    Qui invece dichiari la grandezza dell'array ma ti scordi sempre di dichiarare b
    codice:
    int[] b = new int[1];
    questo è corretto

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    per ora dico che la semplicità non è sinonimo di java (con ironia e voglia di imparare lo dico)

    ​Prova ad usare il c++ e vedi cosa non è sinonimo di semplicità

  7. #7
    ​Prova ad usare il c++ e vedi cosa non è sinonimo di semplicità
    dimenticavo...noooooo!!!mai compreso xchè rendere complesse le cose
    Luca Bottoni's World
    www.bottonisworld.com

  8. #8
    Io sono passato a java dal delphi, perché il delphi mi sembrava troppo complicato per le conoscenze che avevo e avevo scelto java perché è molto più semplice e non me ne pento.

    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    dimenticavo...noooooo!!!mai compreso xchè rendere complesse le cose
    Più è astratto, più è potente, più è complesso (punto di vista).
    Il main ce anche in c++, ed è un metodo lanciato automaticamente dalla JVM quando avvii l'applicazione. Il main ti serve praticamente se vuoi far partire l'applicazione in java, altrimenti ti da errore e non parte. Ogni variabile chiamata da un generico metodo static deve essere statica se non è locale.
    Ultima modifica di CaMpIoN; 03-12-2014 a 22:03
    Forza Napoli!

  9. #9
    grazie CaMpIoN e RoTeam, non dico che è limpido ora...ma almeno qualche cosa è un pò più chiara


    concordo che maggiore è la complessità e maggiore è la potenza , anche se un'occhio all'immediatezza ci vuole sempre

    Oramai ero talmente abituato al "non dichiarare" che ora ho difficoltà a ritrovarmi..comunque, mi par di catturare che

    1. creo una classe "programma" che contiene il main
    2. inserisco prima di main le variabili static che sono come dire la configurazione base
    3. creo le X1,...Xn classi del mio programma
    4. nel main iniziale scrivo il colllante di tutte le mie classi

    a grosse linee....
    Luca Bottoni's World
    www.bottonisworld.com

  10. #10
    Quote Originariamente inviata da lbottoni Visualizza il messaggio
    grazie CaMpIoN e RoTeam, non dico che è limpido ora...ma almeno qualche cosa è un pò più chiara


    concordo che maggiore è la complessità e maggiore è la potenza , anche se un'occhio all'immediatezza ci vuole sempre

    Oramai ero talmente abituato al "non dichiarare" che ora ho difficoltà a ritrovarmi..comunque, mi par di catturare che

    1. creo una classe "programma" che contiene il main
    2. inserisco prima di main le variabili static che sono come dire la configurazione base
    3. creo le X1,...Xn classi del mio programma
    4. nel main iniziale scrivo il colllante di tutte le mie classi

    a grosse linee....
    Tipico approccio di chi non è abituato a ragionare ad oggetti ma in maniera procedurale...
    Sul punto 1 niente da dire, senza un mani non si parte.
    Gli ulteriori punti secondo me non sono corretti in quanto la programmazione ad oggetti è basata sul concetto di scambio di messaggi, le variabili-classi-metodi statici sono la cosa meno object-oriented quindi ne andrebbe limitato (ho detto limitato e non che non si devono usare).
    lo schema quindi di un applicativo a grandi linea dovrebbe essere:
    1) main -> raccogli i parametri di avvio e passale ad una classe che si occuperà di effettuare le configurazioni del caso
    2) questa classe invierà un messaggio ( invoca un metodo) con la configurazione per avviare l'applicazione....

    e continuando così messaggio.... Messaggio.... Messaggio

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.