In questa serie di tutorial, acquisirai familiarità con Java, il linguaggio di programmazione utilizzato per sviluppare applicazioni Android. Il nostro obiettivo è preparare coloro che hanno già familiarità con un linguaggio di programmazione, come PHP o Objective-C, per familiarizzare con il linguaggio di programmazione Java e immergersi nello sviluppo di app Android. In questo tutorial specifico, imparerai le basi della sintassi Java, incluso come creare commenti, definire variabili, creare istruzioni condizionali e iterare usando i loop. Se sei nuovo in Java, o semplicemente stai cercando di rispolverare i dettagli, allora questa è la serie di tutorial per te!
Per quanto riguarda i prerequisiti, non faremo molte ipotesi sulla tua esperienza di programmazione. Noi siamo assumendo che tu capisca come programmare (forse in PHP, o Visual Basic o C ++), ma che non hai familiarità con le specifiche della programmazione in linguaggio Java. Non entreremo nei dettagli di perché vorresti fare un ciclo for contro un ciclo while, ma ti mostreremo, in Java, la sintassi di entrambi i tipi di loop. Detto in un altro modo, non ti insegneremo a programmare; forniremo chiari esempi di costrutti e principi del linguaggio Java comunemente utilizzati, evidenziando alcuni suggerimenti e trucchi specifici per Android.
Tecnicamente, non hai bisogno di strumenti per completare questo tutorial, ma sicuramente ti serviranno per sviluppare applicazioni Android.
Per sviluppare applicazioni Android (o qualsiasi altra applicazione Java, per quella materia), è necessario un ambiente di sviluppo per scrivere e creare applicazioni. Eclipse è un ambiente di sviluppo molto popolare (IDE) per Java e l'IDE preferito per lo sviluppo Android. È liberamente disponibile per i sistemi operativi Windows, Mac e Linux.
Per le istruzioni complete su come installare Eclipse (incluse le versioni supportate) e l'SDK Android, consultare il sito Web degli sviluppatori Android.
Ora diamo un'occhiata ad una sintassi Java più utile.
La maggior parte dei linguaggi di programmazione consente commenti e Java non è diverso. Puoi incapsulare qualsiasi numero di righe di testo iniziando il tuo commento con / * e terminando il tuo commento con * /. Per esempio:
/ * COMMENTO MULTILINEO /
Puoi anche fornire commenti dopo codice su un singolo usando //. Per esempio:
int x = 7; // La prima variabile chiamata x equivale a sette int y = 8; // La seconda variabile chiamata y è uguale a otto int result = x + y; // Il valore della variabile di risultato dovrebbe essere uguale a 15
Java ha anche un tipo standard di commenti chiamato Javadoc che può essere usato non solo per commentare il codice, ma anche per creare facilmente la documentazione del codice. Questo argomento è piuttosto ampio, ma ecco un esempio dei commenti di Javadoc:
/ ** Questo metodo fa qualcosa di interessante * * @param someValue processato e restituito * L'opzione @param cambia il tipo di elaborazione eseguita su someValue * @return Il risultato di qualche valore in elaborazione * / pubblico int sampleMethod (int someValue, opzione booleana) // ...
Una variabile è semplicemente un pezzo di dati. Le variabili Java generalmente rientrano in due categorie:
Le variabili sono utilizzate per scopi diversi. A volte le variabili vengono utilizzate per memorizzare valori che possono essere modificati o modificati nel tempo. Ad esempio, una variabile chiamata contatore potrebbe essere incrementata occasionalmente. Altre variabili, in particolare le variabili di classe che rimangono le stesse per tutte le istanze di una data classe, dovrebbero essere definite usando la parola chiave static. Altre volte le variabili potrebbero rappresentare costanti: queste variabili dovrebbero utilizzare la parola chiave final per mostrare che non cambiano nel tempo.
Una variabile è valida solo nel suo territorio, o scopo. L'ambito variabile è spesso controllato da parentesi graffe . Quando una variabile è definita, è valida all'interno di quelle parentesi. Se si tenta di accedere a una variabile al di fuori delle parentesi, non sarà definito. Spesso vengono chiamate variabili membro della classe in linguaggi orientati agli oggetti attributi. Possono anche essere chiamati campi o proprietà.
Come altri linguaggi di programmazione comuni, hai il tuo operatore di assegnazione, il segno di uguale:
int i = 5;
Hai anche i tuoi operatori aritmetici come +, -, *, /. Ricordarsi di utilizzare le parentesi per forzare l'ordine delle operazioni secondo necessità:
int result = (a + b) / c;
Infine, hai i tuoi tipici operatori unari, che ti permettono di modificare una singola variabile con una semplice istruzione:
iPositive ++; // incrementa di uno; equivalente a iPositive = iPositive + 1; iPositive -; // decremento di uno; equivalente a iPositive = iPositive - 1;
Si noti che gli operatori di incremento (++) e decremento (-) possono essere prefissi o postfissi, il che significa che l'incremento può essere eseguito prima o dopo che siano determinati determinati condizionali, se l'elemento viene utilizzato in un ciclo. In generale, ci piace attenersi alle istruzioni postfix, quindi il codice è più leggibile.
Diamo un'occhiata ad alcuni dei tipi di dati primitivi disponibili nel linguaggio di programmazione Java:
Le variabili dei tipi primitivi possono essere definite specificando il tipo di dati, seguito dal nome della variabile, quindi un segno di uguale e un valore iniziale. Tutte le istruzioni Java terminano con un punto e virgola. Ad esempio, la seguente istruzione Java definisce una variabile denominata iVal, con un valore iniziale di 1:
int iVal = 1;
Come molti altri linguaggi, puoi definire un array a base zero di un tipo di dati specifico. Ad esempio, il seguente definisce un array di tre valori interi (prime quattro potenze di 2):
int [] aiPowersOfTwo; aiPowersOfTwo = new int [4]; aiPowersOfTwo [0] = 1; // 2 ^ 0 = 1 aiPowersOfTwo [1] = 2; // 2 ^ 1 = 2 aiPowersOfTwo [2] = 4; // 2 ^ 2 = 4 aiPowersOfTwo [3] = 8; // 2 ^ 3 = 8
Le librerie Java forniscono un numero di oggetti utili da utilizzare con strutture dati comuni. Tutti gli oggetti sono derivati dalla classe Object. Ci sono controparti di classe per tutti i tipi di dati primitivi. Ad esempio, la classe Integer incapsula un valore int e fornisce un numero di metodi utili per la manipolazione dei valori di dati interi. Ad esempio, il seguente codice Java crea un'istanza di una variabile intera chiamata iVal, quindi crea un oggetto Integer utilizzando un costruttore che accetta un intero e quindi utilizza un metodo di handle disponibile nella classe Integer per estrarre un equivalente variabile float.
int iVal = 1; Intero intero1 = nuovo Intero (iVal); float f = integ1.floatValue ();
Forse l'oggetto più comune che userai nelle applicazioni Android è String. La classe String viene utilizzata per incapsulare caratteri di testo leggibili dall'uomo, che vengono spesso visualizzati sullo schermo. Se stai modificando o costruendo stringhe dalle parti più piccole, ti consigliamo di controllare anche le classi StringBuffer e StringBuilder.
String strHello = new String ("Hello World");
Per un elenco di tipi di dati Java comuni, il riferimento Android include la documentazione per il pacchetto java.lang. È inoltre possibile trovare gli oggetti di input / output comuni nel pacchetto java.io.
Per strutture di dati più complesse come liste, code, stack, date e orari, le classi appropriate sono nel pacchetto java.util.
Infine, le applicazioni Android si basano su un numero di classi utili che definiscono i componenti dell'applicazione comunemente utilizzati, come Attività, Applicazione, Dialogo e Servizio. Queste classi possono essere trovate nel pacchetto android.app.
Puoi controllare la visibilità di una classe e le sue variabili e metodi specificando il livello di accesso di un elemento. I livelli di accesso sono pubblici, protetti e privati. In generale, se vuoi che qualcosa sia accessibile al di fuori di una classe, usa il pubblico. Se un metodo o una variabile dovrebbero essere accessibili solo dalla classe stessa, utilizzare private. Utilizzare protetto quando è necessario accedere alla classe o alle sue sottoclassi.
Ad esempio, la seguente definizione della classe SillySensor definisce diverse variabili e metodi con diversi livelli di accesso:
public class SillySensor private int sensorData; public SillySensor () sensorData = 0; private void calibrate (int iSeed) // Effettua calibrazione qui protected void seedCalibration (int iSeed) calibrate (iSeed); public int getSensorData () // Controlla che il sensore restituisca sensorData;
Java include istruzioni condizionali, che possono essere utilizzate per eseguire snippet di codice se, e solo se, vengono soddisfatte determinate condizioni. In genere, un'affermazione condizionale coinvolge due lati. Se le due parti sono equivalenti, l'affermazione è vera, altrimenti è falsa.
Java ha tutti gli operatori condizionali tipici, come ad esempio:
E quando è necessario combinare più istruzioni condizionali in un singolo test condizionale più ampio, è possibile utilizzare AND (&&) e OR (||):
Java ha operatori bit a bit (&, |, ^), shift (>>, <<), and complement (~) operators as well, should you need them. See the Java documentation for more details.
Ora che sai come creare un'istruzione condizionale, puoi creare segmenti di codice condizionali. La forma più semplice di un'istruzione di codice condizionale è l'istruzione if ():
condizione booleana = vero; if (condition == true) // Esegui questo codice solo se la variabile condition è vera
Se si desidera fornire un codice alternativo da eseguire se la condizione non viene soddisfatta, utilizzare la clausola else con l'istruzione if ():
condizione booleana = vero; if (condizione == true) // Esegui questo codice solo se il valore della variabile di condizione è vero else // Esegui questo codice solo se il valore della variabile di condizione è falso
Se si desidera gestire più di due casi, è possibile utilizzare istruzioni ifid else-if-else a cascata, come questo:
if (iVar == 0) // variable is zero else if (iVar> 0) // variable è un numero positivo else // variable è un numero negativo
Quando si dispone di un certo numero di percorsi di codice diversi possibili di quella derivata da un singolo valore di variabile, è possibile utilizzare un'istruzione switch (). Con un'istruzione switch, si fornisce la variabile da verificare e si forniscono numerose opzioni da eseguire per casi specifici. È inoltre possibile fornire un'opzione predefinita da eseguire se non si applicano altri casi. Ogni caso può essere risolto con una dichiarazione di rottura. Se non viene fornita un'istruzione break, il codice continuerà a essere eseguito nella successiva dichiarazione del caso.
char singleChar = 'z'; switch (singleChar) case 'a': case 'e': case 'i': case 'o': case 'u': // singleChar è una vocale! Esegui questo codice! rompere; default: // singleChar è una consonante! Esegui invece questo codice! rompere;
Quando vuoi eseguire codice ripetutamente, o usare la ricorsione (heh, guarda quella su se non sai di cosa stiamo parlando), Java ha il supporto per diversi tipi di loop.
Per eseguire un ciclo continuo a condizione che un'istruzione sia vera, utilizzare un ciclo while ():
int numItemsToProcess = 3; while (numItemsToProcess> 0) // processare un oggetto numItemsToProcess--;
Se si desidera valutare l'espressione del ciclo condizionale DOPO la prima iterazione, è possibile utilizzare invece un ciclo do-while:
do // verifica la presenza di elementi da elaborare, aggiorna numItemsToProcess come richiesto // elemento processo, aggiornato numItemsToProcess while (numItemsToProcess> 0);
Infine, se si desidera eseguire il ciclo per un numero specifico di iterazioni, è possibile utilizzare un ciclo for (). Un ciclo for () ha tre parametri: il valore iniziale, il valore finale e il valore incrementale. Ad esempio, per eseguire un ciclo 100 volte, stampando i numeri da 1 a 100, è possibile utilizzare il seguente ciclo for ():
per (int i = 1; i <=100; i++) // print i
Nota: è anche possibile utilizzare un'istruzione break per uscire da un ciclo while (), do-while () o for () quando necessario. Puoi anche usare un'istruzione continue per saltare il resto di un'iterazione corrente di un loop e passare alla successiva iterazione (rivalutare l'espressione condizionale, ovviamente).
Non ci sono puntatori in Java. Ok, ok, vai avanti e tira un sospiro di sollievo. La vita è abbastanza dura senza che i puntatori mordano le cose, giusto?
Ok, ora è il momento di prestare nuovamente attenzione. In Java, i parametri del metodo vengono passati per valore. Tuttavia, quando un parametro metodo è un oggetto (ovvero, qualsiasi cosa eccetto un tipo primitivo), solo un riferimento a quell'oggetto viene passato nel metodo [molto simile ai puntatori, mi dispiace!]. Pertanto, per modificare l'oggetto passato in un determinato metodo, generalmente si passa il riferimento all'oggetto e quindi si agisce su di esso, che modifica i dati sottostanti dell'oggetto passato. Tuttavia, non è possibile scambiare l'oggetto stesso ... Ecco un rapido esempio:
Qui, abbiamo una classe chiamata Cat:
public class Cat private String mCatName; Cat (nome stringa) mCatName = nome; public String getName () return mCatName; ; public void setName (String strName) mCatName = strName; ;
Ora proviamo a usare questa classe e passiamo un oggetto Cat in alcune funzioni e vediamo cosa succede:
void messWithCat (Cat kitty) kitty = new Cat ("Han"); void changeKitty (Cat kitty) kitty.setName ("Wookie"); Cat haveKitten () Cat kitten = new Cat ("Luke"); ritorno gattino;
Infine, chiamiamo questi metodi e vediamo come agiscono sulle istanze degli oggetti Cat:
Cat cat1 = new Cat ("Jabba"); Cat cat2 = new Cat ("Leia"); cat1.getName (); // Restituisce Jabba cat2.getName (); // Restituisce Leia messWithCat (cat1); changeKitty (CAT2); Cat cat3 = haveKitten (); cat1.getName (); // Restituisce Jabba - Nota che l'oggetto rimane invariato! cat2.getName (); // Restituisce Wookie cat3.getName (); // restituisce Luke
Hai appena completato un corso accelerato del linguaggio di programmazione Java. Anche se potresti non essere pronto a scrivere la tua prima app Java, dovresti essere in grado di utilizzare la più semplice delle classi Java dell'applicazione di esempio Android e determinare cosa stanno facendo, almeno in termini di sintassi Java delle cose. La prima lezione che vorresti esaminare per lo sviluppo di Android è la classe Activity. Un'applicazione Android utilizza attività per definire diverse attività di runtime e, pertanto, è necessario definire un'attività per fungere da punto di accesso all'applicazione. Ora che hai un handle sulla sintassi Java, ti consigliamo vivamente di lavorare con un'esercitazione per principianti su Android.
Hai solo graffiato la superficie dello sviluppo Java per lo sviluppo Android. Scopri tutti gli altri fantastici tutorial su Mobiletuts + per approfondire lo sviluppo di Java e Android. Ti consigliamo vivamente le seguenti esercitazioni su Android: Introduzione allo sviluppo Android di Gyuri Grell e Android iniziale: Inizia con Fortune Crunch per iniziare a dilettarti nello sviluppo di Android. In bocca al lupo!
Gli sviluppatori mobili Lauren Darcey e Shane Conder hanno coautore diversi libri sullo sviluppo di Android: un libro di programmazione approfondito intitolato Sviluppo di applicazioni wireless Android e Sams TeachYourself Sviluppo di applicazioni Android in 24 ore. Quando non scrivono, passano il loro tempo a sviluppare software mobile presso la loro azienda ea fornire servizi di consulenza. Possono essere contattati via email a [email protected], tramite il loro blog su androidbook.blogspot.com e su Twitter @androidwireless.