Aflați Java pentru Dezvoltare Android Sintaxă Java

În această serie de tutori, veți cunoaște limba Java, limba de programare folosită pentru a dezvolta aplicații Android. Scopul nostru este de a pregăti pe cei deja familiarizați cu un limbaj de programare, cum ar fi PHP sau Obiectiv-C, pentru a deveni confortabil în lucrul cu limbajul de programare Java și pentru a vă scufunda în dezvoltarea aplicațiilor Android. În acest tutorial specific, veți învăța elementele de bază ale sintaxei Java, inclusiv cum să creați comentarii, să definiți variabile, să arătați declarații condiționale și să repetați folosind bucle. Dacă sunteți nou la Java, sau doar căutați să citiți detaliile, atunci aceasta este seria tutorial pentru tine!

Noțiuni de bază

În ceea ce privește premisele, nu vom face multe presupuneri despre experiența dvs. de programare. Noi sunteți presupunând că înțelegeți cum să programați (probabil în PHP sau Visual Basic sau C ++), dar că nu sunteți familiarizați cu specificul programării în limba Java. Nu vom intra în detalii De ce ați dori să faceți o for-loop versus o buclă de timp, dar vă vom arăta, în Java, sintaxa ambelor tipuri de bucle. A spus altfel, nu vă vom învăța să programați; vă vom oferi exemple clare de construite și principii de limbă utilizate în mod obișnuit în Java, în timp ce vom arăta câteva sfaturi și trucuri specifice pentru Android.

Ce ai nevoie

Din punct de vedere tehnic, nu aveți nevoie de niciun fel de instrumente pentru a finaliza acest tutorial, dar cu siguranță veți avea nevoie de ele pentru a dezvolta aplicații Android.

Pentru a dezvolta aplicații Android (sau orice aplicații Java, de pildă), aveți nevoie de un mediu de dezvoltare pentru a scrie și a construi aplicații. Eclipse este un mediu de dezvoltare foarte popular (IDE) pentru Java și IDE preferat pentru dezvoltarea Android. Este disponibil gratuit pentru sistemele de operare Windows, Mac și Linux.

Pentru instrucțiuni complete despre cum să instalați Eclipse (inclusiv versiunile acceptate) și SDK-ul Android, consultați site-ul Web pentru dezvoltatorii Android.

Acum, să ne uităm la o sintaxă Java mai utilă.

Comentarii

Majoritatea limbajelor de programare permit comentarii și Java nu este diferit. Puteți încapsula orice număr de linii de text prin începerea comentariului dvs. cu / * și încheierea comentariului dvs. cu * /. De exemplu:

/ * COMENTARIUL MULTILINE * / 

De asemenea, puteți să oferiți comentarii după cod pe un singur // utilizând. De exemplu:

int x = 7; // Prima variabilă numită x este egală cu șapte int y = 8; // A doua variabilă numită y este egală cu opt int int = x + y; Valoarea variabilă rezultată ar trebui să fie egală cu 15 

Java are, de asemenea, un tip standard de comentarii numit Javadoc care poate fi folosit nu numai pentru a comenta codul, ci și pentru a crea cu ușurință documentația codului. Acest subiect este destul de mare pe cont propriu, dar iată un exemplu de comentarii despre Javadoc:

/ ** Această metodă face ceva interesant * * @param someValue prelucrat și returnat * @param opțiunea modifică tipul de procesare făcut la someValue * @return Rezultatul someValue fiind procesat * / public int sampleMethod (int someValue, opțiunea booleană)  // ... 

variabile

O variabilă este pur și simplu o bucată de date. Variabilele Java se încadrează, în general, în două categorii:

  • Tipurile de date primitive, cum ar fi int, float, double, char, etc.
  • Obiectele Java (definite de o definiție de clasă)

Variabilele sunt utilizate în scopuri diferite. Uneori variabilele sunt folosite pentru a stoca valori care se pot schimba sau pot fi modificate în timp. De exemplu, o variabilă numită contor ar putea fi incrementată ocazional. Alte variabile, în special variabilele de clasă care rămân aceleași pentru toate instanțele unei clase date, ar trebui să fie definite utilizând cuvântul cheie static. Alte variabile de timp ar putea reprezenta constante - aceste variabile ar trebui să folosească cuvântul cheie finală pentru a arăta că nu se schimbă în timp.

O variabilă este valabilă numai pe teritoriul său sau domeniu. Scopul variabil este adesea controlat de brațele curbate . Atunci când o variabilă este definită, aceasta este valabilă în acele brațe. Dacă încercați să accesați o variabilă în afara bretelelor, aceasta va fi nedefinită. Variabilele de membru din clasă în limbi orientate pe obiecte sunt adesea numite atribute. Acestea pot fi, de asemenea, numite câmpuri sau proprietăți.

Ca și alte limbi de programare obișnuite, aveți operatorul de atribuire, semnul egal:

int i = 5; 

De asemenea, ați primit operatorii aritmetici ca +, -, *, /. Nu uitați să utilizați paranteze pentru a forța ordinea de operații după cum este necesar:

rezultatul int = (a + b) / c; 

În sfârșit, aveți operatorii tipici unari, care vă permit să modificați o singură variabilă cu o simplă declarație:

iPositive ++; // incrementare cu unul; echivalentul lui iPositive = iPositive + 1; iPositive -; // decrementare cu unul; echivalent cu iPositive = iPositive - 1; 

Rețineți că operatorii de incrementare (++) și decrement (-) pot fi prefix sau postfix, ceea ce înseamnă că incrementarea poate fi executată înainte sau după determinarea oricăror condiționalități, dacă elementul este utilizat într-o buclă. În general, ne place să rămânem la declarațiile postfix, deci codul este mai ușor de citit.

Tipuri de date primitive

Să ne uităm la unele dintre tipurile de date primitive disponibile în limbajul de programare Java:

  • octet
    • O variabilă octet este un număr întreg de semnal pe 8 biți între -128 și 127. Adesea folosit pentru tablouri.
  • mic de statura
    • O variabilă scurtă este un număr întreg de 16 biți între -32.768 și 32.767. Din nou, adesea folosit pentru tablouri.
  • int
    • O variabilă int este un număr întreg pe 32 biți între -2,147,483,648 și 2,147,483,647. Aceasta este cea mai frecvent utilizată variabilă "număr".
  • lung
    • O variabilă lungă este un număr întreg pe 64 biți între -9,223,372,036,854,775,808 și 9,223,372,036,854,775,807. Se utilizează atunci când tipul de date int nu este suficient de mare.
  • pluti
    • O variabilă float este un număr unic de precizie pe 32 de biți.
  • dubla
    • O variabilă dublă este un număr de virgulă mobilă pe 64 de biți cu precizie dublă. Utilizați acest tip de date pentru valorile zecimale.
  • boolean
    • O variabilă booleană are numai două valori posibile: true and false. Utilizați acest tip de date pentru declarații condiționate.
  • carboniza
    • O caracteristică variabilă este un singur caracter unicode pe 16 biți.

Variabilele de tip primitiv pot fi definite prin specificarea tipului de date, urmat de numele variabilei, apoi de semnul egal și de valoarea inițială. Toate instrucțiunile Java se termină cu un punct și virgulă. De exemplu, următoarea instrucțiune Java definește o variabilă numită iVal, cu o valoare inițială de 1:

int iVal = 1; 

Ca multe alte limbi, puteți defini o matrice bazată pe zero a unui anumit tip de date. De exemplu, următoarele definesc o matrice de trei valori întregi (primele patru puteri de 2):

int [] aiPowersOfTwo; aiPowersOfTwo = int 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 

Obiecte Java utilizate în mod obișnuit

Bibliotecile Java furnizează un număr de obiecte utile pentru utilizarea cu structuri de date comune. Toate obiectele sunt derivate din clasa Obiect. Există omologii de clasă pentru toate tipurile de date primitive. De exemplu, clasa Integer încapsulează o valoare int și oferă un număr de metode utile pentru manipularea valorilor datelor întregi. De exemplu, următorul cod Java generează o variabilă intregă numită iVal, apoi creează un obiect Integer folosind un constructor care ia un număr întreg și apoi folosește o metodă de manevră disponibilă în clasa Integer pentru a extrage un echivalent variabil float.

int iVal = 1; Integer integ1 = Integer nou (iVal); flotare f = integ1.floatValue (); 

Poate că obiectul cel mai obișnuit pe care îl veți folosi în aplicațiile Android este Stringul. Clasa String este utilizată pentru a încapsula caracterele text care pot fi citite de oameni, care sunt adesea afișate pe ecran. Dacă modificați sau construiți șiruri de caractere de la părți mai mici, veți dori, de asemenea, să verificați clasele StringBuffer și StringBuilder.

String strHello = String nou ("Hello World"); 

Pentru o listă de tipuri de date comune Java, referința Android include documentația pentru pachetul java.lang. De asemenea, puteți găsi obiectele comune de intrare / ieșire din pachetul java.io.

Pentru structuri de date mai complexe, cum ar fi listele, cozile, stivele, datele și orele, clasele corespunzătoare sunt în pachetul java.util.

În cele din urmă, aplicațiile Android se bazează pe o serie de clase utile care definesc componentele de aplicație utilizate în mod obișnuit, cum ar fi Activitate, Aplicație, Dialog și Serviciu. Aceste clase pot fi găsite în pachetul android.app.

Permisiuni de clasă și acces

Puteți controla vizibilitatea unei clase, precum și variabilele și metodele sale, specificând nivelul de acces al unui element. Nivelurile de acces sunt: ​​publice, protejate și private. În general, dacă doriți ca ceva să fie accesibil din afara unei clase, utilizați publicul. Dacă o metodă sau o variabilă ar trebui să fie accesibilă doar din clasă, folosiți metoda privată. Utilizați protejate atunci când clasa sau oricare din subclasele sale au nevoie de acces.

De exemplu, următoarea definiție a clasei SillySensor definește mai multe variabile și metode cu diferite nivele de acces:

  • O variabilă de clasă numită sensorData, care este vizibilă numai în cadrul clasei
  • Un constructor public care poate fi numit în afara clasei
  • O metodă privată numită calibrare (), care poate fi apelată numai din interiorul clasei
  • O metodă protejată numită seedCalibration (), care poate fi apelată din interiorul clasei însăși sau printr-o subclasă
  • O metodă publică numită getSensorData (), care poate fi apelată de oriunde, permițând accesul "read-only" la variabila sensorData
 clasa publică SillySensor private sensor sensor Data; public SillySensor () sensorData = 0;  private void calibrate (int iSeed) // Efectuați o calibrare aici protejată void seedCalibration (int iSeed) calibrate (iSeed);  public int getSensorData () // Verificați senzorul aici returnDataData;  

Condiționalele

Java include instrucțiuni condiționale, care pot fi folosite pentru a executa fragmente de cod dacă și numai dacă sunt îndeplinite anumite condiții. De obicei, o declarație condiționată implică două laturi. Dacă cele două părți sunt echivalente, afirmația este adevărată, altfel este falsă.

Java are toți operatorii condiționali tipici, cum ar fi:

  • == egal cu, ca în (a == b)
  • != nu egal cu, ca în (x! = y)
  • > mai mare decât, ca în (z> y)
  • > = mai mare sau egal cu, ca în (q> = z)
  • < less than, as in (b < a)
  • <= less than or equal to, as in (a <= z)

Și când trebuie să combinați mai multe instrucțiuni condiționale într-un singur test condițional mai mare, puteți utiliza AND (&&) și OR (||):

  • ((a == b) && (a == c)) // adevărat numai dacă A este egal cu B și egal cu C
  • (a == b) || (a == c)) // adevărat numai dacă A este egal cu B sau egal cu C

Java are operatori bitwise (&, |, ^), schimburi (>>, <<), and complement (~) operators as well, should you need them. See the Java documentation for more details.

Acum că știți cum să efectuați o declarație condiționată, puteți crea segmente de cod condiționate. Cea mai simplă formă a unei instrucțiuni de cod condițional este instrucțiunea if ():

boolean condition = true; dacă (condiție == true) // Executați acest cod numai dacă variabila condiție este adevărată 

Dacă doriți să furnizați un cod alternativ pentru a rula dacă condiția nu este îndeplinită, atunci utilizați clauza else cu instrucțiunea if ():

boolean condition = true; dacă (condiție == true) // Executați acest cod numai dacă valoarea variabilei condiție este adevărată altceva // Executați acest cod numai dacă valoarea variabilei condiție este falsă 

Dacă doriți să gestionați mai mult de două cazuri, puteți utiliza instrucțiuni cascading if-else-if-else, cum ar fi:

dacă (iVar == 0) // variabila este zero altceva dacă (iVar> 0) // variabila este un număr pozitiv altceva // variabila este un număr negativ 

Comutați declarațiile de caz

Când aveți un număr de căi de cod diferite posibil ca ramificația de la o singură valoare variabilă, puteți utiliza o comandă switch (). Cu o instrucțiune switch, furnizați variabila pentru a verifica și a oferi numeroase opțiuni de execuție pentru anumite cazuri. De asemenea, puteți furniza o opțiune implicită de executat dacă nu se aplică alte cazuri. Fiecare caz poate fi reziliat cu o declarație de pauză. Dacă nu este furnizată o declarație de pauză, codul va continua executarea în instrucțiunea următorului caz.

 char singleChar = 'z'; comutare (singleChar) caz 'a': cazul 'e': cazul 'i': cazul 'o': cazul 'u': // singleChar este o vocală! Executați acest cod! pauză; implicit: // singleChar este o consoană! Executați acest cod în schimb! pauză;  

buclele

Când doriți să executați în mod repetat codul sau folosind recursion (ah, arătați că unul nu știți despre ce vorbim), Java are suport pentru mai multe tipuri diferite de bucle.

Pentru a realiza buclă continuu cu condiția ca o afirmație să fie adevărată, utilizați o buclă while ():

int numItemsToProcess = 3; în timp ce (numItemsToProcess> 0) // procesează un element numItemsToProcess--;  

Dacă doriți să evaluați expresia de buclă condițională după prima repetare, puteți folosi o buclă do-while:

nu // verificați ca elementele să fie procesate, actualizați numItemsToProcess după cum este necesar // elementul de proces, actualizat numItemsToProcess în timp ce (numItemsToProcess> 0); 

În cele din urmă, dacă doriți să introduceți buclă pentru un anumit număr de iterații, puteți utiliza o buclă for (). O buclă pentru () are trei parametri: valoarea inițială, valoarea terminării și valoarea de incrementare. De exemplu, pentru a executa o buclă de 100 de ori, tipărirea numerelor de la 1 la 100, ați putea folosi următoarele pentru buclă ():

pentru (int i = 1; i <=100; i++)  // print i  

Notă: Puteți utiliza, de asemenea, o instrucțiune de pauză pentru a ieși din buclă (), do-while () sau pentru () atunci când este necesar. De asemenea, puteți utiliza o instrucțiune pentru a trece peste restul unei iterații curente a unei buclă și treceți la următoarea iterație (reevaluarea expresiei condiționate, desigur).

Trecerea în funcție de valoare față de referință

Nu există indicii în Java. Ok, bine, du-te și respirați puțin. Viața este destul de greu, fără ca pointerii să-și facă lucrurile, bine?

Ok, acum e timpul să ne mai atenți din nou. În Java, parametrii metodei sunt transmise prin valoare. Cu toate acestea, atunci când un parametru de metodă este un obiect (adică orice, cu excepția unui tip primitiv), numai o referință la acel obiect este trecută în metodă [la fel ca pointerii, îmi pare rău!]. Prin urmare, pentru a modifica obiectul trecut într-o anumită metodă, treceți în general referința obiectului și apoi acționați asupra acestuia, ceea ce modifică datele de bază ale obiectului în care ați trecut. Cu toate acestea, nu puteți schimba obiectul în sine ... Iată un exemplu rapid:

Aici avem o clasă numită Cat:

public clasa Cat private String mCatName; Cat (numele șirului) mCatName = nume;  public String getName () retur mCatName; ; public void setName (String strName) mCatName = strName; ;  

Acum, să încercăm să folosim această clasă și să transmitem un obiect Cat în câteva funcții și să vedem ce se întâmplă:

 void messWithCat (pisica Cat) kitty = noua Cat ("Han");  void changeKitty (Pisică pisică) kitty.setName ("Wookie");  Cat areKitten () Pisicuta Cat = noua Cat ("Luke"); pisoi retur;  

În cele din urmă, să numim aceste metode și să vedem cum acționează asupra instanțelor obiectelor Cat:

Cat cat1 = pisica noua ("Jabba"); Cat cat2 = pisică nouă ("Leia"); cat1.getName (); // Returnează Jabba cat2.getName (); // Returnează Leia messWithCat (cat1); changeKitty (cat2); Pisica cat3 = haveKitten (); cat1.getName (); // Returnează Jabba - Rețineți că obiectul rămâne neschimbat! cat2.getName (); // Returnează Wookie cat3.getName (); // Returnează Luke 

Înfășurarea în sus

Tocmai ați terminat un curs de eroare al limbajului de programare Java. În timp ce este posibil să nu fiți pregătit să vă scrieți prima aplicație Java, ar trebui să puteți lucra prin cele mai simple clase Java de aplicații Android și să determinați ce au de gând, cel puțin în ceea ce privește sintaxa Java a lucrurilor. Prima clasă pe care doriți să o căutați pentru dezvoltarea Android este clasa de activitate. O aplicație Android utilizează activități pentru a defini diferite sarcini de rulare și, prin urmare, trebuie să definiți o activitate care să acționeze ca punct de intrare în aplicația dvs. Acum, că aveți o manevră asupra sintaxei Java, vă recomandăm să lucrați printr-un tutorial Android începător.

Ați zgâriat doar suprafața de dezvoltare Java pentru dezvoltarea Android. Verificați toate celelalte tutoriale mari de pe Mobiletuts + pentru a vă arunca cu adânc în dezvoltarea Java și Android. Vă recomandăm următoarele tutoriale pentru începutul Android: Introducere în dezvoltarea Android de Gyuri Grell și Beginning Android: Noțiuni de bază cu Fortune Crunch pentru a începe dabbling în dezvoltarea Android. Mult noroc!

despre autori

Dezvoltatorii mobili Lauren Darcey și Shane Conder au coautorizat mai multe cărți despre dezvoltarea Android: o carte de programare în profunzime intitulată Dezvoltarea aplicațiilor fără fir Android și Sams TeachYourself Dezvoltarea de aplicații Android în 24 de ore. Când nu scriu, își petrec timpul dezvoltând software-ul mobil la compania lor și oferind servicii de consultanță. Acestea pot fi obținute prin e-mail la androidwirelessdev@[email protected], prin intermediul blogului lor la androidbook.blogspot.com, și pe Twitter @ androidwireless.

Aveți nevoie de mai mult ajutor pentru scrierea aplicațiilor Android? Consultați cele mai recente cărți și resurse!

   


Tutoriale corelate:

  • Aflați Java pentru dezvoltarea Android: Introducere în Java
  • Introducere în Android SDK Development
  • Început Android: Noțiuni de bază cu FortuneCrunch
  • Dispoziții obișnuite pentru dispozitivele virtuale Android
  • Lansarea aplicației Maps în aplicație
  • Permiterea utilizatorilor să trimită e-mail în aplicație
  • Utilizând Alerte, Toasturi și Notificări
  • Crearea de formulare simple pentru utilizatori

Cod