Køreplan for en Java-udvikler
En af mine venner undrede sig over, hvorfor udviklere altid er så glade. Svaret, hun kom med, var enkelt og overraskende: de gør, hvad de kan lide og tjener store penge. Velkommen til en verden af softwareudviklere.Softwareudviklers løn
Jeg vil gerne fortælle dig om udviklernes løn. Hvordan jorden ligger med lønninger, hvor du skal arbejde, og hvor du ikke skal. Hvis du ikke er en udvikler og prøver at pusle det ud på egen hånd, kan du få en ret kontroversiel data. Hovedpointen er, at den vigtigste faktor, der påvirker en udviklers løn, ikke er kvalifikation, men ansættelsesstedet. Nogle gange, givet lige kvalifikationsniveau, kan forskellen mellem godt og dårligt ansættelsessted være 2 til 10 gange(!). Hvert givet tidspunkt er din kvalifikation konstant. Du kan ikke blive dobbelt så kvalificeret på en måned og få dobbelt så meget udbetalt. Men du kan skifte arbejdsplads på en måned og få dobbelt så stor løn. En gang i løbet af to måneder ganget min løn med tre (!) – Uforglemmelig oplevelse. Så lad os finde ud af, hvilket sted der er bedst.- Om hovedforretningen for en virksomhed er softwareudvikling
- Uanset om virksomheden er orienteret på det globale eller lokale marked
- Hvor er hovedkontoret placeret: udviklet land eller udviklingsland
Specifikke tal
Da lønningerne er forskellige i forskellige dele af verden, foreslår jeg at tage udgangspunkt i lønnen for Senior Java Developer med 5 års erfaring og kalde det "5 års maksimum". Alle tal nedenfor vil blive angivet som en procentdel af dette beløb. Her er nogle eksempler på "5 års maksimum" lønninger i forskellige byer i verden: Nedenfor er det vist, hvor meget en Java Senior Developer med 5 års erfaring kan tjene afhængigt af den virksomhed, han arbejder for: Hvad er det mærkeligste ved den nuværende situation? Halvdelen af alle programmører arbejder i virksomheder på 1 og 2 niveau. Vil du vide, hvad er fangsten? Der er hundredvis af åbnede ledige stillinger i virksomheder på 3 og 4 niveauer. Disse virksomheder er villige til at tilbyde dig højere lønninger og normalt bedre arbejdsforhold. Jeg kender to Java Junior'er, en af dem fik et job, der betalte omkring 3% af "5 års maksimum" (niveau 1 virksomhed), og en anden fik et job med 30% af "5 års maksimum" løn (niveau 4). Så hvorfor få mindre? Efterspørgslen efter programmører overstiger tilbuddet – gå ikke på arbejde, hvor du får mindre betalt! Konklusion 1: Gennemsnitsløn for Java-udviklere (med enhver erfaring) er 40%-50% af "5 års maksimum" løn. Konklusion 2: Din gennemsnitlige løn om 5 år vil være omkring 90%-110% af "5 års maksimum" løn, hvis du ikke arbejder for virksomheder på 1 og 2 niveau, og arbejder for virksomheder på niveau 3 og 4.Hvad du kan opnå, medmindre du gør dumme ting
Hvis du begynder at arbejde med din selvuddannelse i programmering lige nu, kan din løn se sådan ud:Plan
0-3 måneder (elev)
Du ved meget lidt om programmering. Du har måske studeret det i skolen eller på et kollegium på grundlæggende niveau. Det du skal gøre er at lære at programmere og lære Java. Dit mål er at få et job som Java Junior Developer i en virksomhed på niveau 3 eller derover. I de første tre måneder af planen får du intet, fordi du lige er ved at lære at programmere. Men jo tidligere du starter, jo bedre. Det bedste tidspunkt er NU. I fremtiden, når du har en familie og masser af lån, vil det være meget sværere at genkvalificere. For at rette op på din fejl bliver du nødt til at lægge penge til side for at betale for mindst et år af normalt liv. Lav ikke dumme fejl.3-15 måneder (Java Junior Udvikler)
Du arbejder allerede som softwareudvikler, og din erfaring vokser dagligt. Slap ikke af. Du har meget at gøre, før du hviler på årer. Hvad du skal gøre er - studere teknologier, du skal bruge som mellemudvikler. Hvad er disse? Verden ændrer sig konstant. Jeg vil fylde dig med råd, og livet vil ændre det hele. Find et par ledige stillinger på nettet og se, hvad du skal bruge for at søge. Sørg for at læse en bog af Bruce Eckel "Thinking in Java". Dit mål i det første år af arbejdet som Java Junior Developer er at nå niveauet som Java Middle Developer. Ingen siger, at det ville være let, men det er muligt for en målorienteret person. Det vil øge din løn på et øjeblik op til 40 % af "5 års maksimum" ($50K for SF og London, $6K for Bangalore).2-d års programmering (Java Middle Developer, niveau 1)
Du har gjort et godt stykke arbejde sidste år, og nu er du Java Middle Developer. Du kan leve ret godt med at tjene 50% af senior Java-udviklers løn. Du får nogle seriøse opgaver på arbejdet, og din erfaring vokser markant. Du når niveauet som Java Senior Developer om to eller tre år. Ingen grund til at skynde sig. Du får alligevel ikke store overskud i løn. Hvad du skal gøre er at lære designmønstre, læs – McConnell's Code Complete. Perfekt kvaliteten af din kode og teamfærdigheder. Lav en regel om at læse 1 bog om computerprogrammering hver måned. Så vil du om 4 år være 50 bøger klogere end alle de andre. Udsæt det ikke: du vil ikke få nogen større mængde fritid, desuden vil du højst sandsynligt stifte familie, eller hvis du har en, bliver den større. Dit måler at vælge nogle få teknologier at specialisere sig i som senior Java-udvikler. Du kan ikke lære dem alle sammen. Og det er altid en god beslutning at blive guru i en enkelt specialisering.3-d års programmering (Java Middle Developer, niveau 2)
Du er nu en erfaren mellemudvikler, og du overvejer at blive seniorudvikler. Det er behageligt såvel som prestigefyldt. Din løn overstiger 60 % af "5 års maksimum" ($10K i Bangalore, $25K i Kiev, $40K i Berlin, $80K i New York). Fra dette øjeblik og efterspørgsel efter professionelle som dig stiger tilbuddet. Du vil altid kunne finde et job om et par dage, og du vil næppe nogensinde tjene mindre, end du gør nu. Det, selvfølgelig, hvis man ikke gør noget dumt. Det du skal gøre erfortsæt med at studere de teknologier, du har valgt. Arbejd bedre. Ikke for din arbejdsgivers skyld, for din egen. Ansøg om at deltage i projekter, der involverer lovende teknologier (som BigData, i det øjeblik denne artikel skrives). Du kommer alligevel til at bruge 8 timer om dagen på kontoret, så hvorfor ikke få lidt flere penge for det, og hvad der er langt vigtigere, den mest værdifulde oplevelse, du får brug for i fremtiden. Dit mål er at finde et nyt job. Et godt hold er altid at finde. Du vil møde nye projekter og teknologier. Du behøver ikke rode til din stol. Hvis du stadig arbejder i en virksomhed på tredje niveau, så tænk på at ansætte til en virksomhed på fjerde niveau.5-års programmering (Java Senior Developer, niveau 1
Du er nu seniorudvikler. Måske har du ikke fortjent det, og du føler det. Alligevel, mit tillykke. Det er lige meget, om du er værdig til din stilling nu, alt det betyder, at du bliver værdig til det i fremtiden. Jeg tror, du vil være enig i, at det er bedre at få et godt job og efter at vokse til det krævede niveau, så omvendt. Jeg håber ikke du har glemt mit råd om at læse en bog om måneden? Enhver studerende vil misunde din viden og færdigheder nu. For at være mere specifik, vil han bede på dem. Tænk bare over det: du har en seriøs indtjening, tæt på 90 % af "5 års maksimum" løn. Du er sikkert stadig ung. Verden ligger for dine fødder. Det du skal gøre erat revurdere teknologier, du har valgt. Måske skal du skifte specialisering. Verden har ændret sig, teknologier ændret sig, og du har fået en del viden i de sidste to år. Det, du vælger nu, vil blive overskriften i nogle få år for dig. Det er tid til at vælge dine yndlingsteknologier. Dit mål er at vælge din vækstretning. De er talrige, ingen kan nævne dem alle, men dit valg skal gøres lige nu. Hvis du laver en lille forandring i dag, får du en stor i fremtiden.6-års programmering (Java Senior Developer, niveau 2)
Du har besluttet dig for din fremtid, og du arbejder på, at din drøm skal gå i opfyldelse. En retning valgt korrekt sammen med ønsket om at komme videre – og resultatet vil ikke vare længe. Tillykke. Jeg er glad for at se, at der er endnu en person, der har landet sin drøm. Der er én dyb sandhed. Folk overvurderer ofte, hvad de kan opnå på et år og undervurderer, hvad de kan gøre på fem. Se fem år tilbage. Det er så. Det, du skal gøre, er at undgå ukloge beslutninger og ikke være doven. Dit mål er at vælge retning og komme videre. Eller troede du, det slutter her? Husk din eksamen. Det er ikke slutningen, det er kun begyndelsen.Din fremtidige specialisering
Du kan vokse som teknisk specialist (øvre gren), som ledelse (nedre gren) eller som ansat professionel/uafhængig konsulent (mellem gren). Det hele afhænger af, hvad du foretrækker.Java-udviklerkarriere
Udviklerkarriere er anderledes end nogen anden. Du behøver ikke at blive manager for at tjene gode penge. Det sker ofte, at en seniorudvikler tjener mere end sin leder-chef. Jo mere erfaring du får, desto stærkere skifter dine arbejdsrelationer med din chef fra "chef-underordnet" til "stjerne og leder".To hundrede år gammel udvikler
Hvis du nyder programmering mest af alt, så er dette din måde: Seniorudvikler, derefter Tech Lead Developer og en arkitekt. På denne måde kan du arbejde som udvikler i 50 år og mere. I de fleste tilfælde overstiger lønningerne for seniorudviklere og tekniske ledende udviklere deres lederes løn. Så få dine penge værd.Manager. Du er heldig, du ikke er som de andre
Du gik over til fjenden. Bare for sjov. Hvis du opdager store organisationsevner, så er dine måder: Teamleder og derefter projektleder. Det giver dig en chance for at blive afdelingsleder og åbne din egen virksomhed. Det er det, du vil, ikke?Hjem er hvor hjertet er
Hvis du allerede har stiftet familie , så vil du måske gerne have et dejligt og roligt liv i et land med stærk økonomi. Måske overvejer du at flytte til Canada, USA, Schweiz eller endda Australien. Du har gode kompetencer og et efterspurgt erhverv. Du behøver ikke starte med at vaske op. Du starter som Java Senior Developer. Formentlig tjener meget. Ikke dårligt, ha?Se Napoli og ikke dø.
Du har ikke en familie endnu, og du elsker at rejse . oDesk er dit alt. Find en kunde, accepter en takst på $20-$50 i timen, tag en bærbar computer med dig og gå! Din løn vil være tilstrækkelig til at bo hvor som helst i verden. Hvorfor ikke begynde at gøre dine drømme til virkelighed med det samme?Jeg vil ikke programmere, jeg er en pige..
Hvis du er en pige , skal du muligvis tage en barselsorlov . Det lyder som en sexistisk joke, hvilket det er. Alligevel er der meget sund fornuft i det. Hvis du tager en barselsorlov, vil du højst sandsynligt kunne få mange barselspenge (i lande med høj social beskyttelse). Der er virksomheder, der ikke betaler noget, og der er dem, der betaler godt. En af mine elever fik en tredjedel af årslønnen på barsel. Og det skete i foråret 2009 under afskedigelser. Og om halvandet år kommer du måske tilbage, som i det mindste mellemudvikler.Niveau 6
1 Elly. Objekt synlighed. nul
- Hej, Amigo! - Hej, Elly! Vil du fortælle mig noget interessant i dag? - I dag vil jeg fortælle dig om en genstands levetid . Når et objekt er oprettet, eksisterer det (lever), indtil mindst én variabel gemmer dens adresse (der er mindst én objektreference). Hvis der ikke længere er referencer, dør objektet. Eksempler: - Objektet «cat Tommy» eksisterer i den eneste linje, siden det blev oprettet. I den næste linje er den eneste variabel, der lagrer dens reference, sat til null, og den virtuelle Java-maskine ødelægger objektet. - Objektet «kat Sammy» efter dets oprettelse er gemt i variabel kat1. Eller rettere, cat1 gemmer en reference til objektet. Derefter kopieres et par linjer under denne reference til variablen cat2. Derefter gemmes en reference til et andet objekt i kat1, og referencen til «kat Sammy» forbliver kun i kat2. Til sidst, i den sidste linje i metodens hoved, er den sidste reference til objektet sat til null. - Objektet «cat Maisy» eksisterer i den eneste linje, siden det blev oprettet. I næste linje tildeles variablen cat2 en anden værdi, og referencen til «kat Maisy» går tabt. Objektet bliver utilgængeligt og betragtes som skrald (dødt). - Objektet «cat Ginger» eksisterer fra det øjeblik, det er blevet oprettet til slutningen af metoden. Ved kørsel, når metoden afsluttes, vil variablen cat1 blive ødelagt, og efter objektet «cat Ginger» vil også blive ødelagt. - Det er klart. - Men hvis du opretter objektet Cat i en eller anden metode og gemmer dets reference i en klassevariabel, vil Cat eksistere, så længe der er en reference til det fra et andet eksisterende objekt. - Normalt bliver en genstand ikke ødelagt med det samme. Java virtuel maskine aktiverer lejlighedsvis skraldesamlingen for at fjerne ubrugte objekter. Det fortæller jeg dig om senere. - Hvis du vil have en variabel til at stoppe med at lagre en objektreference, kan du tildele den en nulværdi eller en reference til et andet objekt.2 Professor, Skraldesamling
- Hej, Amigo! Her er et nyttigt link om affaldsindsamlingen i Java. Det er bestemt ikke mine fremragende foredrag, men det er godt nok: Java Garbage Collection Basics3 Elly, afslut
- Hej igen! Nu vil jeg give dig en kort introduktion til metoden finalize() . Denne metode kaldes af Java virtuel maskine på objektet, før objektet ødelægges. Faktisk er denne metode modsat konstruktøren. I denne metode er det muligt at frigive de ressourcer, der bruges af et objekt. - Klassen Object har denne metode, derfor har hver klasse den ( alle klasser i Java anses for at være nedarvet fra klassen Object og indeholder en kopi af dens metoder ). Hvis du skriver i din klasse, vil finalize() metoden blive kaldt, før objekter i denne klasse bliver ødelagt. Eksempel: - Forstår det. - Men der er én ting. Java virtuel maskine bestemmer selv, om denne metode skal kaldes eller ej.Oftest destrueres objekter, der er oprettet i metoden og erklæret som skrald efter dens exit, med det samme og uden nogen kald af finalize()-metoden. Denne metode er endnu et instrument til kontrol over ekstern (uden for JVM) ressourceallokering. Du må hellere frigive alle brugte eksterne ressourcer og nulstille lagrede referencer, når du ønsker, at objektet skal destrueres. Jeg vil fortælle dig om fordelene ved denne metode og detaljerne i dens arbejde i 10 eller 20 niveauer. I mellemtiden bør du vide to ting: sådan en metode findes, og ( overraskelse! ) kaldes den ikke altid.4 Elly, Objektets levetid
- Jeg vil også fortælle dig et par interessante ting om objektets levetid. I Java er det meget svært at miste objektet ved et uheld; hvis du har en objektreference, betyder det, at objektet helt sikkert er i live. - Inde i en objektreference gemmer et nummer – adresse på dette objekt i hukommelsen. Du kan ikke ændre det tal, øge eller mindske det. Du kan ikke oprette en reference, når du bare har adresse i hukommelsen. Du kan kun oprette et nyt objekt og tildele dets reference til en variabel. Dette er den eneste måde at få en ny reference på. - Jeg ser. Det vil sige, at hvis jeg indstiller til null (sletter) alle objektreferencer, får jeg aldrig objektreferencen og får adgang til den? - Jep. Men ofte er det modsatte sandt - der er for mange levende genstande, der ikke bruges.De fleste programmer opretter snesevis af objekter og gemmer dem på forskellige lister under kørsel, men rens aldrig disse lister. - For det meste mærker programmører uønskede objekter som "slettet", det er alt. Ingen bekymrer sig om deres fjernelse fra listerne. Så store Java-programmer har en tendens til at svulme op - flere og flere ubrugte objekter forbliver i live i hukommelsen. - Det er alt. I fremtiden vil jeg altid henlede din opmærksomhed på ubrugte genstande og deres korrekte bortskaffelse. - Ok, tak. Du har opklaret et par ting om referencerne.5 Diego, Objekt livstidsopgaver
- Hej, Amigo! Her er et par opgaver til dig:Opgaver | |
---|---|
1 | 1. finalize() metode for Cat klasse Skriv en metode beskyttet void finalize() kaster Kastbar i klassen Cat |
3 | 2. Klasser Cat and Dog og finalize()-metoden for hver klasse Skriv en finalize()- metode i hver Cat and Dog-klasse, som viser en besked på skærmen om, at objektet er ødelagt. |
3 | 3. 50.000 objekter af Cat-klassen og 50.000 objekter af Dog-klassen Opret i en sløjfe 50.000 objekter af Cat-klassen og 50.000 objekter af Dog-klassen. (Java virtuel maskine vil ødelægge ubrugte objekter, så metoden finalize() vil blive kaldt mindst én gang). |
4 | 4. Cat-tæller I Cat-klassekonstruktøren [public Cat()], øges kattetælleren (statisk variabel catCount af samme klasse) med 1. I metoden finalize() reduceres med 1. |
6 Elly, Statiske klasser og metoder
- Her er et nyt interessant emne. Jeg vil gerne fortælle dig om de statiske variabler og metoder. - Åh, jeg har allerede hørt om statiske variable. Også om statiske metoder, tror jeg. Men jeg vil gerne have flere detaljer. - Når vi deklarerer variabler i en klasse, angiver vi, om disse variable er oprettet i en enkelt delt instans, eller om det er nødvendigt at oprette deres kopier for hvert objekt. Som standard oprettes en ny kopi af klassevariablen for hvert objekt i denne klasse. Sådan ser det ud: - Selvom variablerne kat1.navn og kat2.navn er erklæret i samme klasse - Kat, gemmer de forskellige værdier, fordi de er bundet til forskellige objekter. - Det er klart. - En statisk variabel findes i et enkelt tilfælde; du skal have adgang til det ved at bruge et klassenavn: - Det er også tydeligt. - Klassemetoderne er også opdelt i to kategorier. Almindelige metoder kaldes på objektet og har adgang til dette objekts data. Statiske metoder har ikke sådan adgang , fordi de bare ikke har en objektreference. Statiske metoder er i stand til at få adgang til enten statiske variable af denne klasse eller andre statiske metoder. - Statiske metoder kan ikke få adgang til ikke-statiske metoder eller ikke-statiske variabler! - Hvorfor så? - Hver almindelig klassevariabel er placeret inde i et objekt. Enhver metode kan kun få adgang til en sådan variabel, når den har en reference til det pågældende objekt. En sådan henvisning overføres ikke til statisk metode. - Hvad med almindelige metoder? - Til almindelig metode videregives skjult reference til objektet, som denne metode kaldes på. Variablen, der gemmer denne reference, kaldes denne . Metoden kan således altid hente data fra sit eget objekt eller kalde en anden ikke-statisk metode for det samme objekt. - En null sendes til en statisk metode i stedet for en objektreference. Derfor kan en statisk metode ikke få adgang til ikke-statiske variabler og metoder - den har bare ingen reference til det objekt, de er bundet til. - Jeg ser. - Sådan fungerer almindelige ikke-statiske metoder: - Og sådan fungerer statiske metoder: - En variabel eller en metode er statisk, hvis de er erklæret med nøgleordet static. - Og hvad er fordelene ved sådanne metoder, hvis de er så begrænsede? - Denne tilgang har også sine fordele. - For det første behøver du ikke sende nogen objektreference for at få adgang til statiske metoder og variabler . - For det andet er det nogle gange nødvendigt, at variablen er enestående . Som for eksempel variablen System.out (statisk variabel ud af klassen System). - Og for det tredje, nogle gange er det nødvendigt at kalde en metode, før du kan oprette objekter . - Ved hvilken lejlighed? - Hvorfor tror du, at hovedmetoden er erklæret statisk? At kalde det umiddelbart efter, at klassen er indlæst i hukommelsen, før det er muligt at oprette nogle objekter.7 Risha, Statiske klasser og metoder
- Ud over statiske metoder er der også statiske klasser . Vi vil overveje denne sag senere, jeg vil bare vise dig et eksempel på det: - Du kan oprette så mange objekter af klassen Cat, som du ønsker. I modsætning til en statisk variabel, som eksisterer i et enkelt tilfælde. - Hovedformålet med modifikatoren static før en klasseerklæring er at opretholde en relation mellem klassen Cat og klassen StaticClassExample . Generelt set er klassen Cat ikke bundet (har ikke skjult reference) til StaticClassExample-objektet og kan ikke få adgang til almindelige (ikke-statiske) StaticClassExample-variabler. - Så jeg kan oprette klasser inde i andre klasser? - Jep. Java gør dette muligt. Tænk nu ikke for meget over det. Senere vil jeg forklare nogle andre ting, og alt bliver en smule lettere. - Det håber jeg.8 Diego, Opgaver om statisk metode
- Hej, Amigo! Her er nogle interessante opgaver om statiske metoder:Opgaver | |
1 | 1. Klasse Cat og statisk variabel catCount Skriv en statisk variabel int catCount i klassen Cat. Opret en konstruktør [ public Cat() ], hvor den givne variabel skal øges med 1. |
2 | 2. Statiske metoder: int getCatCount() og setCatCount(int) Tilføj to statiske metoder til klassen Cat: int getCatCount( ) og setCatCount(int) ved hjælp af hvilke du kan få/ændre antallet af katte (variablen catCount) |
3 | 3. Klasse Util Implementer en statisk metode double getDistance(x1, y1, x2, y2) . Den skal beregne afstanden mellem punkter. Brug metoden double Math.sqrt(double a) til at beregne kvadratroden af den parameter, der er bestået |
4 | 4. Class ConsoleReader Skriv en klasse ConsoleReader, som vil have 4 statiske metoder: - String readString() til at læse strenge fra tastatur - int readInt() for at læse tal fra tastatur - dobbelt readDouble() for at læse brøktal fra tastatur - void readLn () for at vente på at trykke enter [brug readString()] |
5 | 5. Klasse StringHelper Skriv en klasse StringHelper, som vil have 2 statiske metoder: - String multiplicer (String s, int count) skal returnere strengens gentagne tælle gange. - String multiplicer(String s) bør returnere strengen s gentaget 5 gange. Eksempel: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 Professor, objekt statisk omfang og levetid
- Det er mig igen. Jeg kan desværre ikke give dig nogle links i dag. De gode foredrag er tabt et sted. Jeg er bange for, at du i dag skal klare dig selv. Men du må hellere lytte mere til Elly og Risha, de kan altid lære dig noget. Prøv dog denne: Objektlivscyklus10 Julio
- Hej, Amigo! Du gjorde et godt stykke arbejde i dag. Derfor kan jeg bare ikke give dig mere. Kom nu, sæt dig ned, showet begynder:11 kaptajn egern
- Hej, soldat! - Godmorgen hr! - Jeg har nogle fantastiske nyheder til dig. Her er et hurtigt tjek for at styrke dine færdigheder. Gør det hver dag, og du vil hurtigt forbedre dine færdigheder. Opgaver er specielt designet til at udføre i Intellij IDEA.Yderligere opgaver at udføre i Intellij Idea | |
---|---|
1 | Klasse Cat og statisk variabel catCount Skriv en statisk variabel public int catCount i klassen Cat. Opret en konstruktør [public Cat()]. Lad den statiske variabel catCount stige med 1, hver gang du opretter en kat (et nyt objekt Cat). Opret 10 objekter Cat og vis værdien af variablen catCount . |
2 | 2. Statiske katte
for at oprette kattevariable : public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. Flyt en statisk modifikator Flyt en statisk modifikator, så koden kompileres. |
4 | 4. Minimum antal statiske nøgleord Tilføj det mindste antal statiske nøgleord for at få koden til at kompilere og programmet til at fuldføre. |
5 | 5. Nogen nye ideer? Lad os tænke...
|
6 | 6. KissMyShinyMetalAss Skriv en klasse ved navn KissMyShinyMetalAss. Opret et objekt af denne klasse, og vis det derefter på skærmen. |
7 | 7. Navn på tre statiske variable Skriv 3 offentlige statiske variable: String Solution.name , String Cat.name , String Dog.name |
GO TO FULL VERSION