I den här tutorialserien kommer du att bli bekant med Java, det programmeringsspråk som används för att utveckla Android-applikationer. Vårt mål är att förbereda dem som redan är bekanta med ett programmeringsspråk, till exempel PHP eller Objective-C, för att bli bekväm med att arbeta med Java-programmeringsspråket och dyka in i Android-apputveckling. I den här specifika handledningen lär du dig grunderna i Java-syntaxen, inklusive hur du skapar kommentarer, definierar variabler, skapar villkorliga uttalanden och itererar med hjälp av loopar. Om du är ny på Java, eller bara tittar på att borsta på detaljerna, så är det här handledningsserien för dig!
Såvitt förutsättningar går, kommer vi inte att göra många antaganden om din programmeringserfarenhet. Vi är kommer att anta att du förstår hur man programmerar (kanske i PHP eller Visual Basic eller C ++), men att du inte är känd med programmeringsspecifikationen i Java-språket. Vi ska inte gå in i detaljerna i Varför du skulle vilja göra en för-loop mot en stund-loop, men vi kommer att visa dig, i Java, syntaxen för båda typerna av slingor. Sagt ett annat sätt, vi kommer inte att lära dig att programmera; Vi kommer att ge dig tydliga exempel på vanliga Java-språkkonstruktioner och -principer, samtidigt som du pekar på några Android-specifika tips och tricks.
Tekniskt behöver du inga verktyg för att slutföra denna handledning, men du kommer säkert att behöva dem för att utveckla Android-applikationer.
För att utveckla Android-applikationer (eller Java-program, för den delen) behöver du en utvecklingsmiljö för att skriva och bygga applikationer. Eclipse är en mycket populär utvecklingsmiljö (IDE) för Java och den föredragna IDE för Android utveckling. Det är fritt tillgängligt för Windows, Mac och Linux operativsystem.
För fullständiga instruktioner om hur du installerar Eclipse (inklusive vilka versioner som stöds) och Android SDK, se webbplatsen för Android-utvecklaren.
Låt oss nu titta på några mer användbara Java-syntaxer.
De flesta programmeringsspråk tillåter kommentarer och Java är inte annorlunda. Du kan inkapsla ett antal rader av text genom att börja med din kommentar med / * och avsluta din kommentar med * /. Till exempel:
/ * MULTILINE KOMMENTAR * /
Du kan också ge kommentarer efter kod på en enda med //. Till exempel:
int x = 7; // Första variabel som heter x är lika med sju int y = 8; // Andra variabel som heter y är lika med åtta int resultat = x + y; // Resultatvariabelvärdet ska vara 15
Java har också en vanlig typ av kommentarer som heter Javadoc som kan användas för att inte bara kommentera kod, men också enkelt skapa koddokumentation. Detta ämne är ganska stort på egen hand, men här är ett exempel på vilka Javadoc kommentarer ser ut som:
/ ** Denna metod gör något intressant * * @param someValue behandlas och returneras * @param alternativ ändrar typen av bearbetning som görs till someValue * @return Resultatet av someValue som behandlas * / public int sampleMethod (int someValue, boolean option) // ...
En variabel är helt enkelt en bit av data. Java-variabler faller vanligen i två kategorier:
Variabler används för olika ändamål. Ibland används variabler för att lagra värden som kan ändras eller ändras över tiden. Till exempel kan en variabel som kallas räknas ökas ibland. Andra variabler, särskilt klassvariabler som förblir desamma för alla instanser av en given klass, bör definieras med hjälp av det statiska sökordet. Andra gånger kan variabler representera konstanter - dessa variabler ska använda nyckelordets slutliga för att visa att de inte ändras över tiden.
En variabel är endast giltig inom sitt territorium, eller omfattning. Variabel räckvidd styrs ofta av lockiga hängslen . När en variabel definieras är den giltig inom dessa hängslen. Om du försöker komma åt en variabel utanför fästena blir den odefinierad. Klassmedlemsvariabler i objektorienterade språk kallas ofta attribut. De kan också kallas fält eller egenskaper.
Precis som andra vanliga programmeringsspråk har du din uppdragsoperatör, jämliksignalen:
int i = 5;
Du har också dina aritmetiska operatörer som +, -, *, /. Kom ihåg att använda parentes för att tvinga operativsystemet efter behov:
int resultat = (a + b) / c;
Slutligen har du dina typiska unary operatörer, som låter dig ändra en enda variabel med ett enkelt uttalande:
iPositive ++; // steg med en; motsvarar iPositive = iPositive + 1; iPositive -; // minskning med en; motsvarar iPositive = iPositive - 1;
Observera att uppgraderingsoperatörerna (++) och decrement (-) kan vara prefix eller postfix, vilket betyder att inkrementet kan utföras före eller efter att några villkor har bestämts, om objektet används i en loop. I allmänhet gillar vi att hålla fast vid postfix-uttalanden, så koden är mer läsbar.
Låt oss titta på några av de primitiva datatyper som finns i Java-programmeringsspråket:
Primitiva variabler kan definieras genom att specificera datatypen, följt av variabelnamnet, sedan en lika tecken och ett initialvärde. Alla Java-uttalanden slutar med en semikolon. Till exempel definierar följande Java-uttalande en variabel som heter iVal, med ett initialvärde på 1:
int iVal = 1;
Liksom många andra språk kan du definiera en nollbaserad grupp av en viss datatyp. Till exempel definierar följande en uppsättning av tre heltalvärden (första fyra krafter 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-biblioteken ger ett antal användbara objekt för användning med vanliga datastrukturer. Alla objekt är härledda från Objeklassen. Det finns klass motsvarigheter för alla primitiva datatyper. Till exempel inkapslerar Integer-klassen ett int-värde och ger ett antal användbara metoder för att manipulera heltalsdata. Till exempel installerar följande Java-kod en heltalvariabel som heter iVal och skapar sedan ett heltalobjekt med en konstruktör som tar ett heltal och använder sedan en handtagsmetod som finns tillgänglig i heltalsklassen för att extrahera en variabelvariabel motsvarande.
int iVal = 1; Heltal integ1 = nytt heltal (iVal); float f = integ1.floatValue ();
Kanske är det vanligaste objektet du ska använda i Android-applikationer strängen. Strängklassen används för att inkapslera läsbara texttecken, som ofta visas på skärmen. Om du ändrar eller bygger strängar upp från mindre delar, vill du också kolla StringBuffer och StringBuilder klasserna.
String strHello = ny sträng ("Hello World");
För en lista över vanliga Java-datatyper innehåller Android-referensen dokumentation för paketet java.lang. Du kan också hitta de gemensamma inmatnings- / utmatningsobjekten i java.io-paketet.
För mer komplexa data strukturer som listor, köer, stackar, datum och tider finns lämpliga klasser i java.util-paketet.
Slutligen är Android-applikationer beroende av ett antal användbara klasser som definierar de vanliga applikationskomponenterna, som Aktivitet, Program, Dialog och Service. Dessa klasser finns i android.app-paketet.
Du kan styra synligheten för en klass samt dess variabler och metoder genom att ange ett objekts åtkomstnivå. Åtkomstnivåerna är: offentliga, skyddade och privata. Generellt sett, om du vill att något ska vara tillgängligt utanför en klass, använd allmänheten. Om en metod eller en variabel endast ska vara tillgänglig från själva klassen, använd privat. Använd skyddad när klassen eller någon av dess underklasser behöver tillgång.
Till exempel definierar följande SillySensor klassdefinition flera variabler och metoder med olika åtkomstnivåer:
offentlig klass SillySensor private int sensorData; offentlig SillySensor () sensorData = 0; privat tomt kalibrera (int iSeed) // Gör någon kalibrering här skyddad tomtkalibrering (int iSeed) kalibrera (iSeed); public int getSensorData () // Kontrollera sensorn här returnera sensorData;
Java innehåller villkorliga uttalanden, som kan användas för att utföra koduttryck om och endast om vissa villkor är uppfyllda. Vanligtvis innebär ett villkorligt uttalande två sidor. Om de två sidorna är likvärdiga är uttalandet sant, annars är det falskt.
Java har alla typiska villkorliga operatörer, till exempel:
Och när du behöver kombinera flera villkorliga uttalanden i ett enda större villkorligt test kan du använda AND (&&) och OR (||):
Java har bitvis operatorer (&, |, ^), skift (>>, <<), and complement (~) operators as well, should you need them. See the Java documentation for more details.
Nu när du vet hur man skapar ett villkorligt uttalande kan du skapa villkorliga kodsegment. Den enklaste formen av ett villkorligt koddeklaration är if () -uppsättningen:
booleskt tillstånd = sant; om (villkor == true) // Kör endast den här koden om tillståndsvariabeln är sann
Om du vill ge alternativ kod att köra om villkoret inte är uppfyllt, använd annars klausulen med if () -satsen:
booleskt tillstånd = sant; om (villkor == true) // Kör endast den här koden om villkorets variabla värde är sant annat // Kör endast den här koden om tillståndsvärdet är falskt
Om du vill hantera mer än två fall kan du använda cascading if-else-if-else uttalanden, så här:
om (iVar == 0) // variabeln är noll annars om (iVar> 0) // variabel är ett positivt tal annars // variabel är ett negativt tal
När du har ett antal olika kodvägar möjliggör den filialen från ett enda variabelvärde, kan du använda en switch () -satsning. Med ett omkopplingsdeklaration tillhandahåller du variabeln för att kontrollera och ge många alternativ att utföra för specifika fall. Du kan också tillhandahålla ett standardalternativ som ska utföras om inga andra fall gäller. Varje enskilt fall kan avslutas med ett slutsats. Om ett pausutlåtande inte levereras kommer koden att fortsätta att utföras i det följande fallet.
char singleChar = 'z'; switch (singleChar) case 'a': case 'e': fallet 'i': fallet 'o': fallet 'u': // singleChar är en vokal! Kör den här koden! ha sönder; default: // singleChar är en konsonant! Kör den här koden istället! ha sönder;
När du vill köra kod flera gånger eller använda recursion (hej, kolla upp den om du inte vet vad vi pratar om), har Java stöd för flera olika slingor.
Att slinga kontinuerligt förutsatt att ett uttalande är sant, använd en stund () -slinga:
int numItemsToProcess = 3; medan (numItemsToProcess> 0) // bearbeta ett objekt numItemsToProcess--;
Om du vill utvärdera det villkorliga looputtrycket efter den första iterationen kan du använda en do-while-loop istället:
gör // kolla på objekt att bearbeta, uppdatera numItemsToProcess efter behov // processobjekt, uppdaterat numItemsToProcess medan (numItemsToProcess> 0);
Slutligen, om du vill slinga för ett visst antal iterationer, kan du använda en för () slinga. En för () loop har tre parametrar: initialvärdet, avslutningsvärdet och inkrementeringsvärdet. Till exempel, för att utföra en slinga 100 gånger och skriva ut siffrorna 1 till 100 kan du använda följande för () slinga:
för (int i = 1; i <=100; i++) // print i
Obs! Du kan också använda ett pausdeklaration för att få ut en stund (), do-while () eller for () loop när det behövs. Du kan också använda ett fortsättningsuttryck för att hoppa över resten av en aktuell iteration av en loop och gå vidare till nästa iteration (omvärdering av villkorligt uttryck, förstås).
Det finns inga tips i Java. Ok, okej, fortsätt och andas lättnadens suck. Livet är svårt nog utan att peka upp saker och ting, rätt?
Okej, nu är det dags att uppmärksamma igen. I Java skickas metodparametrar efter värde. Men när en metodparameter är ett objekt (det vill säga allt utom en primitiv typ), skickas endast en referens till det objektet till metoden [ungefär som pekar, förlåt!]. För att ändra objektet som passerat till en given metod, passerar du allmänt i objektreferensen och sedan handlar om det, vilket ändrar underliggande data för objektet du skickade in. Du kan emellertid inte byta ut objektet själv ... Här är ett snabbt exempel:
Här har vi en klass som heter Cat:
offentliga klassen Cat Private String mCatName; Katt (strängnamn) mCatName = namn; public String getName () returnera mCatName; ; public void setName (String strName) mCatName = strName; ;
Låt oss nu försöka använda den här klassen och skicka ett kattobjekt till några funktioner och se vad som händer:
void messWithCat (Cat kitty) kitty = new Cat ("Han"); void changeKitty (Cat kitty) kitty.setName ("Wookie"); Katt harKitten () Kattkattunge = Ny katt ("Luke"); returnera kattunge;
Till sist, låt oss ringa dessa metoder och se hur de fungerar på katt objekt instanser:
Cat cat1 = new Cat ("Jabba"); Cat cat2 = new Cat ("Leia"); cat1.getName (); // Returnerar Jabba cat2.getName (); // Returnerar Leia messWithCat (cat1); changeKitty (cat2); Cat cat3 = haveKitten (); cat1.getName (); // Returnerar Jabba - Observera att objektet förblir oförändrat! cat2.getName (); // Returnerar Wookie cat3.getName (); // Returnerar Luke
Du har just avslutat en krasch-kurs i Java-programmeringsspråket. Medan du kanske inte är redo att skriva din första Java-app, borde du kunna arbeta genom det enklaste av Android-applikationsprogrammet Java-klasser och bestämma vad de är för, åtminstone när det gäller Java-syntaxen av saker. Den första klassen som du kommer att vilja titta på för Android-utveckling är Aktivitetsklassen. En Android-applikation använder aktiviteter för att definiera olika runtime-uppgifter, och därför måste du definiera en aktivitet för att fungera som ingångspunkt för din ansökan. Nu när du har ett handtag på Java-syntax rekommenderar vi starkt att du arbetar med en nybörjare Android-handledning.
Du har bara repat ytan på Java-utveckling för Android-utveckling. Kolla in alla andra bra handledning på Mobiletuts + för att dyka djupare in i Java och Android utveckling. Vi rekommenderar följande Android-handledning: Introduktion till Android-utveckling av Gyuri Grell och Beginning Android: Komma igång med Fortune Crunch för att börja dabbling i Android-utveckling. Lycka till!
Mobila utvecklare Lauren Darcey och Shane Conder har medverkat flera böcker om Android-utveckling: en fördjupad programmeringsbok med titeln Android Wireless Application Development och Sams TeachYourself Android Application Development inom 24 timmar. När de inte skriver, spenderar de sin tid på att utveckla mobil mjukvara hos sina företag och tillhandahålla konsulttjänster. De kan nås via e-post till [email protected], via deras blogg på androidbook.blogspot.com, och på Twitter @ androidwireless.