CodeGym /Java blogg /Slumpmässig /Gammal nivå 02
John Squirrels
Nivå
San Francisco

Gammal nivå 02

Publicerad i gruppen

CodeGym – lära sig programmering i Java

Gammal nivå 02 - 1Vad sägs om ett helt nytt sätt att studera programmering och utbilda sig? Det ser inte ut som något du har sett förut. Vad sägs om att lära, där du har ett mål, medel och resultat? Jag är glad att kunna presentera de nya onlineprogrammeringskurserna för att lära dig Java.

1 Training är ett onlinespel

Du tar en uppgift, utför den och får en belöning. Jag tror att det är tydligt och vanligt för dig. Uppgifterna är mest olika: läsa kod, lösa uppgifter, videolektioner, korrigering av fel i koden, lägga till nya funktioner, stora uppgifter, skriva spel och mycket mer.

2 Bara det absolut nödvändigaste

För att kursen inte skulle pågå i 5 år, slängde jag bort allt användbart och lämnade bara det mesta som behövs från den. Jag analyserade tiotals lediga jobb på arbetsmarknaden. Alla ämnen nybörjare behöver känna till för att få ett Java Junior Developer-jobb ingår i kursen.

3 Jag har närmat mig din träning noggrant

En komplett kurs innehåller 500 miniföreläsningar och 1200 (!) praktiska uppgifter . Uppgifterna är små, men de är många. Det finns en hel del av dem. Bara det minsta, om du gör det, får du en sådan värdefull upplevelse. Det finns även arbete i par, olika spel, stora uppgifter, riktiga projekt och annan typ av övning.

4 Du kan inte avsluta spelet och inte bli en utvecklare

Kursen innehåller 40 nivåer. Du kan gå till nästa nivå bara om du har löst större delen av uppgifterna på den aktuella nivån. Börjar med lite och lätt, slutar med stort och mycket användbart. Varje person som når slutet får 300-500 timmars praktisk erfarenhet. Och detta ger en stor chans att vinna. Och att få ett jobb.

5 Målinriktad anställningsintervjuförberedelse

De sista 10 nivåerna är dedikerade till att skriva ett CV, förbereda för intervjun och få färdigheter i lagarbete. Filmerna med anställningsintervjuer och deras analys kommer att läggas till. Tja och, förvisso, typiska frågor på intervju med svar. Gamla nivå 02 - 2

6 Du kan lösa uppgifter direkt på plats

Det är väldigt praktiskt och effektivt. Efter att precis ha analyserat en ny uppgift i föreläsningen måste du göra din egen analogt precis här, på sajten. För den som vill göra uppgiften i IDE finns en plugin som gör att du kan ta emot en uppgift med två klick och lämna in den för incheckning . Föreläsningar, analys av exempel, lösa uppgifter direkt på en webbsajt, lösa uppgifter i IDE - gapet mellan teori och praktik är så tunt som aldrig förr.

7 Omedelbar uppgiftskontroll (på mindre än sekund)

Känner du till situationen när du lämnade över en uppgift/arbete för kontroll, och fick vänta på resultat i en vecka, för att personen som kontrollerar det är upptagen? Detta är bara fallet med de flesta offlinekurser. I CodeGym får du resultat av kompilering och kontroll av din uppgiftslösning på mindre än en sekund, efter att du har tryckt på en «Execute/Check»-knapp.

8 CodeGym älskar det när du spenderar tid på Facebook under studietiden

På Facebook finns en sida tillägnad projektet. I den kan du hitta intressanta tekniska artiklar, motiverande berättelser, CodeGym-nyheter och mycket annan användbar information.

9 Täckning

I föreläsningar finns många hänvisningar till olika webbsidor, där du kan läsa förklaringar från andra föreläsare. Mitt mål är att du förstår materialet, inte bara lyssnar på mig.

10 Du behöver bara din hjärna och dator för att bli en utvecklare

Det kommer att ta dig 3 till 6 månader, beroende på hur mycket tid du tränar.

11 Support

Gammal nivå 02 - 3Utan tvekan kommer frågor att uppstå när du står inför tusentals uppgifter. Vi har etablerat en speciell tjänst, där du kommer att kunna ställa frågor om arbetsuppgifter. Andra CodeGym-studenter, moderatorer, volontärer och grundare av tjänsten kommer att svara dig.

12 Gemenskap

Vi tror att styrkan ligger i enhet. Därför skapade vi gemenskapen, där du kan ställa frågor; diskutera olika ämnen, dela artiklar och blogga. Dessutom är en gemenskap den idealiska platsen för att få ett jobb på bekantskap. Ställ därför gärna smarta frågor och ge smarta svar. Ju mer aktiv du uppträder och hjälper andra, desto större chans har andra föreningsmedlemmar att föreslå dig att gå med i deras projekt.

Du har nått en ny nivå

Nivå 2

Gamla nivå 02 - 4

1 Elly, grunden för alla

- Hej, Amigo. Idag vill jag berätta hur ett typiskt Java-program är uppbyggt. Poängen är att varje Java-program består av klasser och objekt . – Jag vet redan vad klasser är. Och vad är föremål? - I analogi med att bygga ett litet fartyg måste du först göra en ritning och sedan ge den till varvet. Baserat på denna ritning kommer ett fartyg att monteras. Eller fem fartyg. Egentligen så många du vill. Dussintals identiska fartyg är byggda utifrån en ritning, det är vad det handlar om! – Alla saker i Java-programmering är exakt likadana. – Programmeraren är som en designingenjör. Och om designingenjören måste göra ritningar måste Java-programmeraren skriva klasser. Sedan görs delar utifrån ritningarna och objekt görs utifrån klasser. - Först skriver vi klasser (gör ritningar), och senare vid programkörning skapar Java Virtual Machine objekt med dessa klasser. På precis samma sätt tillverkas fartyg. Det finns en ritning och många fartyg. Det finns olika fartyg som har olika namn och fraktar olika laster. Men de är väldigt lika: de har alla samma struktur och kan utföra samma uppgifter. – I fartygens fall är allt klart. Ge mig ett par jämförelser till för att förstå exakt vad det handlar om? - Säker. Till exempel bin ... Gammal nivå 02 - 5- Åh nej, vänta ett ögonblick, bin påminner mig om något dåligt. Tänk bättre på en myrstack. – En myrstack är ett bra exempel på objektinteraktion. I den enklaste myrstacken finns det tre klasser av myror: en drottning, soldater och arbetarmyror. Det är skillnad på antalet myror för varje klass. Drottningen är ensam i boet; det finns massor av soldater och hundratals arbetsmyror. Så, vi kan säga, det finns tre klasser och hundratals föremål. Myror kommunicerar med varandra, med samma myror och myror av andra klasser enligt strikta regler. – Det här är ett perfekt exempel. För ett typiskt program är allt detsamma. Ett huvudobjekt skapar objekt av alla andra klasser. Objekten börjar interagera med varandra och "den yttre världen" av ett program. Objekts beteende är hårdkodat inuti dem. – Jag förstår inte riktigt. Förstår snarare inte alls. – De här två förklaringarna är olika sidor av samma mynt. Sanningen ligger någonstans mittemellan. Det första exemplet (det med ritning och skepp) visar förhållandet mellan klassen och objekten i denna klass. Likheten är mycket nära. Det andra exemplet (det med myrstacken) visar förhållandet mellan skrivna klasser och objekt som existerar under körningen. - Menar du att vi först måste skriva klasser för alla objekt som finns i ett program och dessutom beskriva deras interaktion? – Ja, men det är lättare än det verkar. I Java är alla saker vid programkörning objekt, och när du skriver programmet bör du beskriva olika sätt för objektinteraktion. Objekt anropar bara metoder för varandra och skickar nödvändiga data till dem. – Det är inte självklart, men nästan klart. – Men hur vet man vilka metoder man ska ringa och vilken data man behöver för att skicka till metoder? - Varje klass har sin beskrivning för att specificera vad klassen skapades för. Varje metod har också sin beskrivning av vad den gör och vilken data som måste skickas till den. För att använda klassen måste du veta i allmänhet vad den gör. Dessutom måste du veta exakt vad varje metod i den här klassen gör. Men du behöver inte veta hur det går till . Det är en sorts magi. - Humph. Låter så.   - Här, titta på en klasskod som kopierar en fil: Gammal nivå 02 - 6- Det är inte så lätt, men jag förstår redan bilden. - Bra. Vi ses senare, alligator!

2 Risha, Variabler och primitiva typer

- Hej du, gratis arbetskraft. - Jag menar, "Hej, Amigo". Jag vill bekanta dig med den interna strukturen hos variabler. Du vet redan att varje variabel har ett minne associerat med sig, där variabeln lagrar sitt värde. - Ja. Du sa det förra gången. - Bra. Det är bra att du kommer ihåg det. Då fortsätter jag. - klasser . När vi beskriver en ny klass i ett program betyder det att vi deklarerar en ny komplex sammansatt typ , vilken data kommer att vara antingen andra komplexa typer eller primitiva typer. Gammal nivå 02 - 7– Det är fortfarande klart för ett under. – Eftersom stora (komplexa) typer består av många små (primitiva) använder deras föremål mycket minne. Mer än de vanliga primitiva typvariablerna gör. Ibland mycket mer. Tilldelning av komplexa typer av variabler tog mycket tid och krävde kopiering av stora mängder minne. Det är därför komplexa typvariabler inte lagrar själva objektet, utan bara en objektreferens (det vill säga en fyra-byte-adress). Detta räcker för att komma åt objektdata. JVM tar sig an alla svårigheter relaterade till detta. - Jag fattar inte. – Vi har redan diskuterat att variabeln är som en låda. För att lagra 13 i den kan du skriva numret på ett papper och lägga det i en låda. – Tänk dig nu att du måste förvara i en låda (variabel) något lite större. Till exempel en hund, en bil eller din granne Joe. För att förenkla kan du göra en enkel sak: sätta hundens bild istället för hunden, bilens nummerskylt istället för bilen och Joes telefonnummer skrivet på ett papper istället för Joe själv. – Nu tar vi ett papper och skriver Joes telefonnummer på det. Det är som en objektreferens. Om vi ​​drar ut ur lådan skrivs ett ark Joes nummer på, gör kopior och lägger i ett par lådor, hänvisningar till Joe kommer att öka, men det kan bara finnas en Joe. – Fördelen med sådan datalagring är attdet kan finnas många referenser och bara ett objekt . - Det är spännande. Förresten, jag förstod nästan. Svara bara på en fråga till: vad händer om jag tilldelar en komplex typvariabel till en annan komplex typvariabel? – Då kommer dessa två variabler att innehålla samma adress. Och därför, om du ändrar data som lagras i en komplex typvariabel, kommer data för den andra också att ändras . Eftersom du vet , det finns egentligen bara ett objekt som variablerna lagrar referenser till. Ändå kan det finnas många variabler som lagrar referenser till objektet. - Och vad lagras i komplexa typvariabler (referens/klasstyp) medan det inte finns några objektreferenser? Kan det verkligen finnas något sådant? - Ja, Amigo. Du har tagit orden ur min mun. Det kan vara. Om det inte finns någon objektreferens i referensvariabeln (komplex) lagrar den null , en speciell «nullreferens». I själva verket lagrar den helt enkelt adressen till ett objekt lika med 0. Men Java Virtual Machine skapar aldrig objekt med noll adress, därför vet den alltid att om referensvariabeln är 0, så finns det inget objekt där. Gammal nivå 02 - 8Får jag det rätt? Variablerna är indelade i två typer - primitiva och referens. En primitiv typvariabel lagrar ett värde medan en referenstypvariabel lagrar en objektreferens. Primitiva typer är int, char, boolean och några fler. Resten är referensvariabler, de bildas med hjälp av klasser. - Det stämmer, pojke.

3 Elly, Vilka objekt är

Gammal nivå 02 - 9– Här är din favoritlärare igen. Eftersom vi kommer snabbt framåt kommer jag att berätta vad föremål är och hur man hanterar dem. - För att skapa ett objekt måste du skriva objekttypens namn (klass) och nyckelordet nytt före det. Säg att vi har en klass Cat, då: Gammal nivå 02 - 10- Vad händer om du bara skapar ett objekt och inte tilldelar det [dess referens] till någon variabel? - Om du gör det kommer Java Virtual Machine att skapa objektet och omedelbart förklara det som skräp (oanvänt objekt). Efter ett tag kommer den att radera det objektet under sophämtning. - Hur kan jag förstöra föremålet om jag inte längre behöver det? - Det kan du inte.Så snart det inte finns någon variabel för att lagra en objektreferens kommer objektet att flaggas som skräp och JVM kommer att förstöra det under nästa skräphämtning. Så länge det finns minst en objektreferens kommer den att betraktas som live och kommer inte att förstöras. När du snabbt vill förstöra objektet, ställ in alla dess referenser till null, det vill säga tilldela ett nullvärde till alla variabler som refererar till det objektet. - Jag fattar. Det verkar inte alls svårt efter tidigare föreläsningar. – Okej, då är här några uppgifter för dig att förbättra dina färdigheter. Dessa finns också på System.out. Men senare kommer det att bli svårare. Och du kan visa oss vilket stål du är gjord av.
Uppgifter
1 Skriv ett program som visar: «Steg för steg och saken är klar.».
2 Skriv ett program som visar 7 gånger: «Det är lite kul att göra det omöjliga.».
3 Skriv ett program som visar: "Vill alltid lära dig något användbart."

4 Risha, Synlighet av variabler.

- Hej, min favoritstudent. Nu ska jag berätta om synligheten för variabler . - Varför, finns det osynliga variabler också? - Nej, variabler är synliga på platser i koden där variabeln kan nås. Vissa variabler kan nås från var som helst i ett program, andra bara inom sin klass, och vissa variabler kan endast nås inom en metod. – Du kan till exempel inte hänvisa till variabeln innan den har deklarerats. - Kusten är klar. - Här är några exempel: Old Level 02 - 111 En variabel deklarerad i en metod finns / är synlig från början av deklarationen till slutet av metoden. 2 En variabel deklarerad i ett kodblock finns till slutet av detta kodblock. 3 Variabler - metodargument - finns var som helst inom ramen för metoden. 4 Klass-/objektvariabler existerar under objektets hela livslängd. Särskilda åtkomstmodifierare offentliga och privata kontrollerar dessutom deras synlighet. 5 Statiska klassvariabler finns under programmets körning. Åtkomstmodifierarna bestämmer också deras synlighet. – Jag älskar bilder, allt faller på plats. - Bra för dig, Amigo. Har alltid vetat att du är en smart kille. - Jag ska också berätta om åtkomstmodifierare . Var inte så rädd, det är inte raketvetenskap. Det här är orden offentlig och privat som du ser. – Jag är inte rädd, det är bara kallt här. - Ja visst. Du kan styra åtkomst (synlighet) för metoder och variabler i din klass från de andra klasserna. För varje metod eller variabel kan du endast ange en åtkomstmodifierare. 1 Modifier public En variabel, metod eller klass flaggad med en modifier public kan nås från var som helst i programmet. Det är den högsta graden av öppenhet, utan begränsningar. 2 Modifier privat En variabel eller metod flaggad med en modifierare privat kan endast nås från klassen där den har deklarerats. För alla andra klasser är en flaggad metod eller variabel osynlig, som om de inte existerade. Detta är den högsta graden av slutenhet (endast synlig från samma klass). 3 Modifierarstandard Om någon modifierare inte flaggar en variabel eller metod, anses den vara en modifierarstandard. Variabler eller metoder med den modifieraren (det vill säga utan någon alls) är synliga för alla klasser i paketet de är deklarerade i. Endast i samma paket. Denna modifierare kallas ibland paket för att antyda att åtkomst till variabler och metoder är möjlig för hela paketet, som deras klass tillhör fliken Förklaring: Old Level 02 - 12

5 Diego, Uppgifter för att skapa ett gäng variabler

- Hej kompis. Om det behövs sparar jag en kopia av avtalet åt dig. Den där lömska cheapskate Risha är lyckligt ovetande. Du borde ha sett beloppen i mitt kontrakt. Heh, heh. - Bra gjort, Diego. Jag tror att du lär mig riktigt användbara saker. - Visst, Amigo. Vill man vara fin, får man lida pin. Men ändå lider någon av smärtan utan vinning. - Låt oss bättre vända oss för att studera. Nu ska jag visa dig hur du skapar ett gäng variabler på olika sätt: Old Level 02 - 13- Wow, Diego! Du är så smart. - Heh, heh! Tack, Amigo. - Jag tror att du redan har missat mina uppgifter. Så här är några av dem. Dessa människor, utomjordingar vet ingenting om vårt robo-liv. Vem utom jag ska lära dig det?
Uppgifter
1 Skriv ett program som visar 3 gånger: «Många människor lever bara för att det är olagligt att skjuta dem.».
2 Skriv ett program som visar: «Om jag vill ha din åsikt, ber jag dig att fylla i de nödvändiga formulären.».
3 Skriv ett program som visar 20 gånger: "Jag sa aldrig det mesta jag sa."

6 Elly, Passing by reference. Referensvariabler

- Hej, Amigo, det är jag igen, Elly. Förlåt att jag alltid säger det här, men det är bara så som saker och ting görs på jorden på 3000-talet. Jag ska förklara funktionerna hos referensvariabler och hur man skickar referensargument till funktioner (metoder). - Jag är redo. – Jo då, referensvariabler är variabler av alla typer utom primitiva. Dessa variabler innehåller bara adressen till objektet (objektreferens). - Variabler av primitiva typer lagrar ett värde och en typ, och klassvariabler lagrar referenser till objekt i samma klass, brunn eller null. Har jag rätt? - Absolut. - Så, vad är en referens? – Objekt och dess referens är länkade, låt oss säga, som en man och hans telefonnummer. Ett telefonnummer är inte en man, men det kan användas för att ringa en man för att be honom om något, vägleda eller befalla honom. En referens används också för att interagera med ett objekt. Alla objekt interagerar med varandra via referenser. – Det är som om folk kommunicerar med varandra över telefon? - Det är rätt. När du tilldelar ett primitivt objekt kopieras dess värde (dupliceras). När du tilldelar en referensvariabel kopieras endast objektadressen (telefonnumret) och inte själva objektet. - Okej, jag förstår. - En referens erbjuder en annan fördel: du kan skicka en objektreferens till vilken metod som helst, och den här metoden kommer att kunna modifiera (ändra) vårt objekt med hjälp av dess referens genom att anropa dess metoder och komma åt data i objektet. Old Level 02 - 14- Värdena för variablerna a & b byts ut i swapmetoden . När du anropar swapmetoden får variablerna a & b kopior av värdena m & n . Därför förblir värdena för variablerna m & n desamma när du ändrar värdena för a & b . Det syns tydligt i koden i den högra kolumnen. – Om jag ska vara ärlig fick jag ingenting av det. Kan jag få ett par fler exempel? - När det gäller referenstypen kan du göra det: Old Level 02 - 15- Variablerna a och b är tilldelade referenser till emma respektive alice, a- och b-värden ändras inom objekten emma och alice. - Så det går att deklarera klasser inom andra klasser också? Wow! – Vad gäller resten är det inte klart. – Inte alla samtidigt.

7 Elly, Funktionsanrop, returvärde

– Ja, då vänder vi om. Vi kommer att prata om hur metodanropet fungerar, och sedan försöker du igen titta på föregående föreläsning, okej? - Deal! – Ja, då ska jag berätta om funktion/metodanropet och värden som returneras. - Kommandon är grupperade i funktioner, så du kan köra dem i ett enda block, som ett komplext kommando. För att göra detta måste du skriva namnet på funktionen (metoden) och sedan inom parentes efter namnet ange värden och parametrar. Old Level 02 - 16- I exemplet ovan skrev vi en funktion som visar den passerade strängen 4 gånger. Sedan kallade vi funktion print4 på rad 6. - När det kommer till exekveringen av rad 6 kommer programmet att hoppa till rad 9, och s variabel kommer att tilldelas ett värde " Jag gillar att flytta den, flytta den." - Sedan kommer raderna 11-14 att exekveras, och slutligen kommer funktionen att vara klar och programmet fortsätter med rad 7. - Gotcha. - Du kan inte bara skicka argument (parametrar) till funktionen, utan även returnera resultatet (värdet) av funktionens operation. Detta görs genom att använda nyckelordet retur. Så här ser det ut: Old Level 02 - 17- Jag tror att jag fattar det. Det är samma kod till vänster och till höger. Till vänster presenteras den bara som en separat funktion. - Funktionen beräknar ett värde och skickar det till de som anropade det med returkommandot. Jag tror iallafall det. – I grund och botten är det sant. - Och vad är tomrummet? - Vissa funktioner gör bara något, men beräknar inte och returnerar några värden, som vår huvudsakliga metod().För dessa funktioner skapades en speciell resultattyp void (en tom typ). - Varför kan vi bara ange ingenting, om en funktion inte returnerar något? - Tänk bara på hur varje variabel deklareras: typ och namn. En funktion deklareras med typ, namn och parentes. Funktionsnamn följt av parentes är ett funktionsanrop! - Så det var lättare att komma på "tom typ" än att dela in funktioner i två kategorier, de som returnerar ett värde och inte returnerar ett värde? - Exakt! Du tänker snabbt, min pojke. - Och hur kan jag returnera en tom typ? - Det kan du inte. Så här fungerar det: när JVM utför en returkommandot, beräknar det värdet på uttrycket till höger om ordet retur, lagrar det värdet i ett speciellt minnesområde och avslutar omedelbart funktionen . Den använder det sparade värdet som ett resultat av ett funktionsanrop på den plats där funktionen anropades. Du kan se det i exemplet ovan. - Menar du platsen där int m = min(a,b) transformerat till m = m2 ? - Ja. Efter funktionsanropet fortsätter allt att fungera som om istället för funktionen dess resultat skrivs på samma plats. Läs den meningen en gång till och titta på koden i det sista exemplet. – Det verkar bara lätt, men det är svårt i verkligheten. Jag har bara lite, det är allt. - Det är okej.Vid första försöket kan du bara förstå det du redan vet. Ju mer du kom in på ett nytt område för dig, desto mer oklart. Och resultatet blir ännu mer fantastiskt. Allt eftersom tiden går blir allt klart. – Tja, om så är fallet, så låt oss fortsätta.

8 Diego

- Hej, Amigo. Här är ett par uppgifter för dig. Nu kan du göra något mer än System.out. Gör ditt bästa! Jag tror på dig!
Uppgifter
1 Minst två tal
Skriv en funktion som returnerar minst två tal.
2 Max två tal
Skriv en funktion som ger maximalt två tal.
3 Minst tre tal
Skriv en funktion som returnerar minst tre tal.
4 Minst fyra siffror
Skriv en funktion som returnerar minst fyra siffror.
Funktionen min(a,b,c,d) måste använda (anropa) funktionen min(a,b)
5 Strängduplicering
Skriv en funktion som visar tre gånger den passerade strängen. Varje sträng ska vara på en ny rad.
6 Textvisning
Skriv en funktion som visar den passerade strängen (ordet) tre gånger på samma rad.
Ord måste separeras med ett mellanslag och behöver inte slås samman till ett.

9 Diego, fullständigt klassnamn

Old Level 02 - 18- Hej, Amigo, jag vill berätta om de fullständiga klassnamnen. – Man vet redan att klasserna finns i paketen. Så, ett fullständigt klassnamn är ett namn som täcker alla paket åtskilda av poäng, och ett klassnamn. Exempel: Old Level 02 - 19 - För att använda klassen i din egen kod måste du ange dess fullständiga namn. Du kan dock använda ett kort namn - endast ett klassnamn. För att göra detta måste du "importera" denna klass genom att ange dess namn och lägga till ordet import innan du deklarerar en klass. Klasser av paketet java.lang (String, Integer,...) importeras som standard. Du behöver inte ange dem. Exempel: Old Level 02 - 20- Ett exempel på användning av korta namn: Old Level 02 - 21- Jag förstår. - Bra.

10 Professor, Föreläsning om klasser och föremål

Old Level 02 - 22- Hej, Amigo. Hoppas du förstod allt Elly och Risha har berättat för dig idag. Bara för säkerhets skull, som jag lovade, här är länkar till ytterligare material: 1 Mina anteckningar 2 Tänkande i Java. Den där fantastiska boken har jag redan berättat om. Det skulle vara bra om du läser den. - Jag hoppas att du tar dig tid att titta igenom det. - Ahem. Klart jag kommer!

11 Julio

- Hej, Amigo! Hoppas du får lite hård och tröttsam vila?

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION