I denne opplæringsserien blir du kjent med Java, programmeringsspråket som brukes til å utvikle Android-applikasjoner. Målet vårt er å forberede de som allerede er kjent med ett programmeringsspråk, for eksempel PHP eller Objective-C, for å bli komfortabel å jobbe med Java-programmeringsspråket og dykke inn i Android app-utvikling. I denne spesifikke opplæringen lærer du grunnleggende om Java-syntaks, inkludert hvordan du lager kommentarer, definerer variabler, utarbeider betingede setninger og gjentas ved hjelp av looper. Hvis du er ny til Java, eller bare ser for å børste opp detaljene, så er dette opplæringsserien for deg!
Så langt som forutsetninger går, kommer vi ikke til å gjøre mange forutsetninger om programmeringsopplevelsen din. Vi er kommer til å anta at du forstår hvordan du programmerer (kanskje i PHP eller Visual Basic eller C ++), men at du ikke er kjent med spesifikasjonene for programmering i Java-språket. Vi kommer ikke til å gå inn i detaljene til Hvorfor du ønsker å gjøre en for-loop mot en stund-loop, men vi vil vise deg, i Java, syntaksen til begge typer looper. Sa en annen måte, vi skal ikke lære deg å programmere; Vi skal gi deg klare eksempler på vanlige Java-språkkonstruksjoner og -prinsipper, mens du peker på noen Android-spesifikke tips og triks.
Teknisk trenger du ikke noe verktøy for å fullføre denne opplæringen, men du vil sikkert trenge dem til å utvikle Android-applikasjoner.
For å utvikle Android-applikasjoner (eller Java-programmer, for øvrig), trenger du et utviklingsmiljø for å skrive og bygge programmer. Eclipse er et svært populært utviklingsmiljø (IDE) for Java og den foretrukne IDE for Android-utvikling. Det er fritt tilgjengelig for Windows, Mac og Linux operativsystemer.
For fullstendige instruksjoner om hvordan du installerer Eclipse (inkludert hvilke versjoner som støttes) og Android SDK, se Android-utviklerens nettsted.
La oss nå se på noe mer nyttig Java-syntaks.
De fleste programmeringsspråk tillater kommentarer og Java er ikke annerledes. Du kan inkapslere et hvilket som helst antall tekstlinjer ved å starte kommentaren din med / * og avslutte kommentaren din med * /. For eksempel:
/ * MULTILINE KOMMENTAR * /
Du kan også gi kommentarer etter kode på en enkelt med //. For eksempel:
int x = 7; // Første variabel kalt x er sju int y = 8; // Andre variabel kalt y er lik otte int resultat = x + y; // Resultatvariabelen skal være 15
Java har også en standard type kommentarer kalt Javadoc som kan brukes til ikke bare kommentarkode, men også enkelt lage kode dokumentasjon. Dette emnet er ganske stort på sin egen, men her er et eksempel på hva Javadoc kommentarer ser ut som:
/ ** Denne metoden gjør noe interessant * * @param someValue behandlet og returnert * @param alternativet endrer typen behandling som er gjort til someValue * @return Resultatet av someValue blir behandlet * / public int sampleMethod (int someValue, boolean option) // ...
En variabel er ganske enkelt et stykke data. Java-variabler faller vanligvis i to kategorier:
Variabler brukes til forskjellige formål. Noen ganger brukes variabler til å lagre verdier som kan endres, eller endres, over tid. For eksempel kan en variabel som kalles teller økes ved en anledning. Andre variabler, spesielt klassevariabler som forblir de samme for alle forekomster av en gitt klasse, bør defineres ved hjelp av det statiske søkeordet. Andre ganger kan variabler utgjøre konstanter - disse variablene skal bruke nøkkelordets endelige for å vise at de ikke endres over tid.
En variabel er bare gyldig innenfor sitt territorium, eller omfang. Variabelt omfang styres ofte av krøllete braces . Når en variabel er definert, er den gyldig innenfor disse bøylene. Hvis du prøver å få tilgang til en variabel utenfor bøylene, blir den udefinert. Klasselementvariabler i objektorienterte språk kalles ofte egenskaper. De kan også kalles felt eller egenskaper.
Som andre vanlige programmeringsspråk har du din oppdragsoperatør, likestilt:
int i = 5;
Du har også fått dine aritmetiske operatører som +, -, *, /. Husk å bruke parentes for å tvinge operasjonsordren etter behov:
int resultat = (a + b) / c;
Endelig har du de typiske unary operatørene, som lar deg endre en enkelt variabel med en enkel setning:
iPositive ++; // økning med en; tilsvarer iPositive = iPositive + 1; iPositive -; // nedgang med en; tilsvarer iPositive = iPositive - 1;
Merk at økningen (++) og decrement (-) -operatørene kan være prefikset eller postfix, noe som betyr at inkrementet kan utføres før eller etter at noen betingelse er bestemt, hvis varen brukes i en løkke. Vanligvis liker vi å holde fast i postfix-setninger, så koden er mer lesbar.
La oss se på noen av de primitive datatyper som er tilgjengelige i Java-programmeringsspråket:
Primitive typer variabler kan defineres ved å spesifisere datatypen, etterfulgt av variabelnavnet, deretter et like tegn og en innledende verdi. Alle Java-setninger slutter med et semikolon. For eksempel definerer følgende Java-setning en variabel som heter iVal, med en startverdi på 1:
int iVal = 1;
Som mange andre språk kan du definere et nullbasert utvalg av en bestemt datatype. For eksempel definerer følgende et utvalg av tre heltallverdier (første fire krefter på 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
Java-bibliotekene gir en rekke nyttige objekter for bruk med vanlige datastrukturer. Alle objekter er avledet fra Objeklassen. Det er klassemodeller for alle primitive datatyper. For eksempel inkluderer Integer-klassen en int-verdi og gir en rekke nyttige metoder for å manipulere heltalldataverdier. For eksempel installerer følgende Java-kode en heltallvariabel kalt iVal, og oppretter deretter et helhetsobjekt ved hjelp av en konstruktør som tar et heltall, og bruker deretter en håndteringsmetode som er tilgjengelig i integer-klassen for å trekke ut en variabel variabel tilsvarende.
int iVal = 1; Integer integ1 = nytt heltal (iVal); float f = integ1.floatValue ();
Kanskje det vanligste objektet du vil bruke i Android-applikasjoner, er strengen. String-klassen brukes til å inkapslere menneskelig lesbare tekstkarakterer, som ofte vises på skjermen. Hvis du endrer eller bygger strenger opp fra mindre deler, vil du også sjekke ut StringBuffer og StringBuilder-klassene.
String strHello = Ny String ("Hello World");
For en liste over vanlige Java-datatyper inkluderer Android-referansen dokumentasjon for java.lang-pakken. Du kan også finne de vanlige inn / ut-objektene i java.io-pakken.
For mer komplekse datastrukturer som lister, køer, stabler, datoer og klokkeslett, er aktuelle klasser i java.util-pakken.
Endelig er Android-applikasjoner avhengig av en rekke nyttige klasser som definerer de vanlige applikasjonskomponentene, som Aktivitet, Søknad, Dialog og Service. Disse klassene finnes i android.app-pakken.
Du kan kontrollere synligheten til en klasse, samt variablene og metodene ved å angi et objekts tilgangsnivå. Tilgangsnivåene er: offentlige, beskyttede og private. Vanligvis, hvis du vil ha noe å være tilgjengelig fra utenfor en klasse, bruk offentlig. Hvis en metode eller variabel bare skal være tilgjengelig fra selve klassen, bruk privat. Bruk beskyttet når klassen eller noen av dens underklasser trenger tilgang.
For eksempel definerer følgende SillySensor klassdefinisjon flere variabler og metoder med forskjellige tilgangsnivåer:
offentlig klasse SillySensor private int sensorData; offentlig SillySensor () sensorData = 0; privat ugyldig kalibrering (int iSeed) // Gjør noe kalibrering her beskyttet tomtfrøKalibrering (int iSeed) kalibrere (iSeed); offentlig int getSensorData () // Kontroller sensor her return sensorData;
Java inneholder betingede setninger, som kan brukes til å utføre kodeutdrag hvis, og bare hvis visse betingelser er oppfylt. Vanligvis innebærer en betinget uttalelse to sider. Hvis de to sidene er ekvivalente, er utsagnet sant, ellers er det feil.
Java har alle de typiske betingede operatørene, for eksempel:
Og når du må kombinere flere betingede utsagn i en enkelt, større betinget test, kan du bruke AND (&&) og OR (||):
Java har bitvis operatorer (&, |, ^), skift (>>, <<), and complement (~) operators as well, should you need them. See the Java documentation for more details.
Nå som du vet hvordan du lager en betinget utsagn, kan du opprette betingede kodesegmenter. Den enkleste formen for en betinget kodeoppgave er if () setningen:
boolean tilstand = sant; hvis (betingelse == sant) // Kjør bare denne koden hvis betingelsesvariabel er sant
Hvis du vil gi alternativ kode for å kjøre hvis betingelsen ikke er oppfylt, bruk så ellers klausulen med if () -oppstillingen:
boolean tilstand = sant; hvis (betingelse == sant) // Kjør bare denne koden hvis betingelsesvariabelverdi er sant ellers // Utfør kun denne koden hvis betingelsesvariabelværdien er feil
Hvis du vil håndtere mer enn to tilfeller, kan du bruke cascading if-else-if-else setninger, slik:
hvis (iVar == 0) // variabel er null annet hvis (iVar> 0) // variabel er et positivt tall annet // variabel er et negativt tall
Når du har en rekke forskjellige kodebaner, muliggjør den grenen fra en enkelt variabel verdi, kan du bruke en bryter () -etning. Med en bryteretning gir du variabelen til å sjekke og gir mange alternativer til å utføre for bestemte tilfeller. Du kan også levere et standardalternativ å utføre hvis ingen andre tilfeller gjelder. Hvert tilfelle kan avsluttes med en pauseoppgave. Hvis en pauseoppgave ikke er oppgitt, vil koden fortsette å utføres i den neste saksoppstillingen.
char singleChar = 'z'; switch (singleChar) case 'a': case 'e': case 'i': case 'o': case 'u': // singleChar er vokal! Kjør denne koden! gå i stykker; standard: // singleChar er en konsonant! Kjør denne koden i stedet! gå i stykker;
Når du vil utføre koden gjentatte ganger, eller bruke rekursjon (hei, se den opp hvis du ikke vet hva vi snakker om), har Java støtte for flere forskjellige typer looper.
Å løse kontinuerlig forutsatt at en setning er sant, bruk en stund () sløyfe:
int numItemsToProcess = 3; mens (numItemsToProcess> 0) // behandler et element numItemsToProcess--;
Hvis du vil evaluere betinget loop-uttrykk etter den første iterasjonen, kan du bruke en runde i stedet:
gjør // se etter elementer som skal behandles, oppdater numItemsToProcess etter behov // prosesselement, oppdatert numItemsToProcess mens (numItemsToProcess> 0);
Til slutt, hvis du vil sløyfe for et bestemt antall iterasjoner, kan du bruke en for () sløyfe. A for () sløyfe har tre parametre: startverdien, avslutningsverdien og stigningsverdien. For eksempel, for å utføre en sløyfe 100 ganger, skriver du tallene 1 til 100, kan du bruke følgende for () sløyfe:
for (int i = 1; i <=100; i++) // print i
Merk: Du kan også bruke et pauseoppsett for å komme ut av en stund (), do-while () eller for () sløyfe når det er nødvendig. Du kan også bruke et fortsettelsesuttrykk for å hoppe over resten av en gjeldende iterasjon av en loop og gå videre til neste iterasjon (revurdere betinget uttrykk, selvsagt).
Det er ingen poeng i Java. Ok, ok, gå videre og pust et mildt sukk. Livet er hardt nok uten å peke på ting, rett?
Ok, nå er det på tide å legge merke til igjen. I Java overføres metodeparametere etter verdi. Men når en metodeparameter er en gjenstand (det vil si alt unntatt en primitiv type), sendes bare en referanse til objektet inn i metoden [omtrent som pekere, beklager!]. Derfor, for å modifisere objektet som er overført til en gitt metode, passerer du vanligvis i objektreferansen og deretter handler på den, som endrer de underliggende dataene til objektet du passerte inn. Du kan imidlertid ikke bytte ut selve objektet ... Her er et raskt eksempel:
Her har vi en klasse kalt Cat:
offentlig klasse Cat Private String mCatName; Katt (Strenge navn) mCatName = navn; offentlig String getName () return mCatName; ; Offentlig tomt settnavn (String StrName) mCatName = strName; ;
La oss nå prøve å bruke denne klassen og sende et kattobjekt til noen funksjoner og se hva som skjer:
void messWithCat (Cat kitty) kitty = new Cat ("Han"); void changeKitty (Cat Kitty) kitty.setName ("Wookie"); Cat kitten () Cat kitten = new Cat ("Luke"); returnere kattunge;
Til slutt, la oss kalle disse metodene og se hvordan de virker på katteobjekter:
Cat cat1 = new Cat ("Jabba"); Cat cat2 = new Cat ("Leia"); cat1.getName (); // Returnerer Jabba cat2.getName (); // Returnerer Leia messWithCat (cat1); changeKitty (cat2); Cat cat3 = haveKitten (); cat1.getName (); // Returnerer Jabba - Merk at objektet forblir uendret! cat2.getName (); // Returnerer Wookie cat3.getName (); // Returnerer Luke
Du har nettopp fullført et kollaps i Java-programmeringsspråket. Selv om du kanskje ikke er klar til å skrive din første Java-app, bør du kunne jobbe gjennom det enkleste av Android-applikasjonsprogrammet Java-klasser og avgjøre hva de skal, i hvert fall når det gjelder Java-syntaksen av ting. Den første klassen du vil ønske å se etter Android-utvikling er aktivitets-klassen. En Android-applikasjon bruker aktiviteter for å definere ulike runtime-oppgaver, og derfor må du definere en aktivitet for å fungere som inngangspunkt for søknaden din. Nå som du har et håndtak på Java-syntaks, anbefaler vi sterkt at du jobber gjennom en nybegynner Android-opplæring.
Du har bare riper overflaten av Java-utvikling for Android-utvikling. Sjekk ut alle de andre gode opplæringene på Mobiletuts + for å dykke dypere inn i Java og Android utvikling. Vi anbefaler følgende begynnende Android-opplæringsprogrammer: Introduksjon til Android-utvikling av Gyuri Grell og Beginning Android: Komme i gang med Fortune Crunch for å begynne å dabble i Android-utvikling. Lykke til!
Mobilutviklere Lauren Darcey og Shane Conder har medforfatter flere bøker om Android-utvikling: en grundig programmeringsbok med tittel Android Wireless Application Development og Sams TeachYourself Android Application Development i 24 timer. Når de ikke skriver, bruker de sin tid på å utvikle mobil programvare hos deres firma og tilby konsulenttjenester. De kan nås via e-post til [email protected], via bloggen deres på androidbook.blogspot.com, og på Twitter @androidwireless.