Filosofie java download epub. Întrebări și sarcini pentru cartea rusă Thinking in Java (Philosophy of Java) de Bruce Eckel

După cum am înțeles, „Filosofia Java” a lui Bruce Eckel este prezentată în limba rusă în 6 forme (fără a număra edițiile foarte vechi):

spoiler

1. Bruce Eckel. Filosofia Java. Traducere de la a 3-a ediție „engleză”. Titlul original „Thinking in”
Java". Editura Peter. Număr de pagini 976. Anul lansării 2003. Cartea este dedicată java 1.4.
Se pare că nu este o ediție completă (sau poate completă), dar cu o traducere normală.

2. Bruce Eckel. Filosofia Java. Traducere de la a 4-a ediție „engleză”. Titlul original Thinking in Java.
Număr de pagini 640. Anul lansării 2009. Editura Peter. Ediție dublu decupată cu

3. Bruce Eckel. Filosofia Java. Traducere de la a 4-a ediție „engleză”. Titlul original Thinking in Java.
Număr de pagini 640. An lansare 2011. Editura Peter. Ediție dublu decupată cu
traducere groaznică. Cartea este dedicată java 1.5.

4. Bruce Eckel. Filosofia Java. Traducere de la a 4-a ediție „engleză”. Titlul original Thinking in Java.
Număr pagini 640. An lansare 2013. Editura Peter. Ediție dublu decupată cu
traducere groaznică. Cartea este dedicată java 1.5.

5. Bruce Eckel - Filosofia Java. Traducere de la a 4-a ediție „engleză”. Anul publicării - 2015.
Editura „Petru”. Număr de pagini - 1165. Cartea este dedicată java 1.5. Așa-zisul complet
ediție. Traducerea nu pare a fi foarte bună.

6. Bruce Eckel - Filosofia Java. Traducere de la a 4-a ediție „engleză”. Anul publicării - 2017.
Numărul de pagini este de 1168. Traducerea este bună. Cartea este dedicată java 1.5.

7. Carte în două volume despre Core Java: Biblioteca Java pentru un profesionist. Kay S. Horstmann, Gary Cornell.
Volumul 1: Bazele. Volumul 2: Instrumente avansate de programare. An de fabricație 2014-2015 (al nouălea
editie, java 1.7). Până la ediția a noua inclusiv, această lucrare în două volume a fost publicată sub autoritatea lui Kay S.
Horstmann și Gary Cornell, apoi a fost publicat doar de Kay S. Horstmann.

8. Aceeași carte în două volume, dar sub paternitatea lui Kay S. Horstmann. Volumul 1: Bazele. Volumul 2: Instrumente avansate
programare. Anul lansării 2017 (ediția a zecea, java 1.8).

Horstmann are și 2 cărți mici (numerotare continuă):

9. Java SE 8. Curs de bază. Titlul original Core Java for the Impatient. Kay S. Horstmann, 464 p., 2016.

10. Java SE 8. Curs introductiv. Java SE 8 pentru cei cu adevărat nerăbdători. Kay S. Horstmann, 208 p., 2014.

Corectează-mă dacă greșesc sau am omis ceva cu privire la cărțile de mai sus. Ce lucruri bune/răi poți spune despre aceste cărți? Ce să citești și ce să nu citești? Ce alte cărți despre Java pot citi (în rusă sau engleză)? Anunțați întreaga listă, vă rog.

În martie anul trecut am aplicat la o sucursală a unei mari companii internaționale din Samara (da, am avut o abundență de aroganță și ambiție încă din copilărie). Pe atunci cunoșteam html, css, java, javascript (basics), pascal, visualbasic6, mysql queries, php, prezentare generală: c++. Nu știam Java deloc. Mi-au oferit un loc de muncă ca layout designer, dar am refuzat. Doar un programator! Apoi au dat lista:

Bruce Eckel Thinking in Java (traducere în rusă a ediției a 2-a sau originalul celei de-a 4-a - citiți ambele)
-Steve McConnell - cod perfect.
-Gang of Four - Design de model. (acesta este aproape ABC-ul OOP)
- să înțeleagă cât mai clar posibilă diferența dintre j2se și j2ee.

în decembrie a apărut nevoia de muncă. am găsit un loc de muncă într-un mic studio web din Samara. A fost imediat clar că aceștia sunt escroci, dar aveam nevoie de orice muncă pe care aș putea să o arăt viitorilor angajatori. Nu au plătit (deși toți au fost urechi cu promisiuni), dar au adus codul la standardele de design și, cel mai important, ne-au învățat unde să căutăm și ce să căutăm în caz de erori, ce mici lucruri sunt ușor de ratat.

Pe lângă literatura de mai sus, am urmat cursul intuit (acum înțeleg că este ridicol în domeniul său de aplicare, dar în principiu elementele de bază sunt acolo)

La sfârșitul lunii februarie, mi-am retrimis CV-ul și am primit o invitație pentru un interviu. Au fost 6 interviuri în total și au durat 1,5 luni. Două dintre ele au avut loc prin intermediul unei legături video cu Moscova. Întreaga imagine amintea de filmul „Vino mâine”. Dar până la urmă am primit o ofertă de muncă. Contractul a fost întocmit pentru angajare cu jumătate de normă, deoarece... Pe vremea aceea nu aveam diploma. Luna trecută mi-am primit diploma și contractul a fost reînnoit pentru muncă cu normă întreagă.

Poziția actuală: Soft Engineer. Salariul este mai mult decât satisfăcător. Ieri, în legătură cu trecerea la munca cu normă întreagă, au crescut-o cu 30%.

Chiar și în acel birou strâmb au cerut exemple de muncă. Am prezentat munca pe care am finalizat-o ca freelancer. Chiar și lucrările în alte limbi sunt întotdeauna mult mai bune decât nicio lucrare.

Ps: diploma albastra in FIZICA. Sunt complet autodidact, așa că totul este în mâinile tale. Am doar engleza de la scoala libera (7 ore pe saptamana). deși americanul care a venit la noi în călătoria lui în jurul lumii nu îl cunoaște bine. Abia am înțeles jumătate din cauza accentului lui. dar acest lucru nu este atât de critic în departamentul meu. Toată documentația este în limba engleză - o vei învăța chiar dacă nu o știai)))))

Mulțumiri speciale acestui forum. De fapt, am studiat aici- în fiecare zi am studiat toate subiectele care au apărut)

Filosofia Java Bruce Eckel

(Fără evaluări încă)

Titlu: Filosofia Java

Despre cartea „Filosofia Java” de Bruce Eckel

Bruce Eckel este un programator remarcabil, autor al unui număr de cărți despre limbaje de programare. Opera sa a devenit rapid populară, deoarece a prezentat concepte complexe într-un limbaj simplu. Au ajutat mulți oameni să învețe programarea de la zero și să obțină succes în acest domeniu. Autorul a primit premii pentru munca sa de mai multe ori. Cărțile sale au fost întotdeauna primite cu căldură de critici, iar cei care doreau să studieze mai profund diferitele limbaje de programare așteptau cu nerăbdare noua sa lucrare. Cea mai faimoasă carte a autorului a fost „Filosofia Java”. S-a vândut în cantități uriașe și a fost retipărit de mai multe ori. Chiar și acum, după un deceniu, această lucrare este o lectură obligatorie pentru cei care doresc să devină programator profesionist.

În cartea sa „Filosofia Java”, autorul dezvăluie secretele acestui limbaj de programare. El sfătuiește să-l privească ca pe ceva viu. El dă cu pricepere exemple care dovedesc că limbajul de programare evoluează și i se fac diverse completări. Poate fi folosit pentru a descrie orice proces.

Majoritatea programatorilor începători nu reușesc să înțeleagă logica Java. Autorul încearcă să explice clar cititorilor despre ce este vorba. Odată ce vor înțelege acest lucru, va fi mult mai ușor să începeți să scrieți programe care nu vor bloca și nu vor încurca specialiștii. Datorită experienței autorului, va fi mai ușor să identificați și să corectați în mod independent erorile care sunt adesea făcute de programatori. Dacă studiezi și înțelegi mai profund limbajul de programare Java, se vor deschide perspective care până acum păreau imposibile.

Bruce Eckel, în cartea sa „Filosofia Java”, a încercat să explice probleme complexe într-un limbaj simplu. Pentru ca cititorii să nu se încurce în termeni, el îi conectează cu natura și situațiile cotidiene. Astfel, informațiile utile sunt reținute mai repede și rămân pentru totdeauna cu persoana. Când apar situații dificile, își amintește o poveste dintr-o carte și o folosește.

Bruce Eckel în cartea sa „Java Philosophy” a încercat să transmită toată experiența sa, așa că a rezolvat totul. Cititorii îl pot absorbi și îl pot folosi doar în munca lor zilnică. Datorită cărții, vei putea evita cele mai frecvente greșeli și vei deveni un programator excelent. Lucrarea autorului a ajutat mulți oameni să înțeleagă cum funcționează Java, să scrie programe excelente și să îmbunătățească software-ul.

Pe site-ul nostru despre cărți, puteți descărca site-ul gratuit fără înregistrare sau puteți citi online cartea „The Philosophy of Java” de Bruce Eckel în formate epub, fb2, txt, rtf, pdf pentru iPad, iPhone, Android și Kindle. Cartea vă va oferi o mulțime de momente plăcute și o adevărată plăcere de la lectură. Puteți cumpăra versiunea completă de la partenerul nostru. De asemenea, aici veți găsi cele mai recente știri din lumea literară, aflați biografia autorilor tăi preferați. Pentru scriitorii începători, există o secțiune separată cu sfaturi și trucuri utile, articole interesante, datorită cărora tu însuți poți să-ți încerci meșteșugurile literare.

Programarea este unul dintre cele mai populare servicii din domeniul IT. Mulți oameni au început să învețe despre această industrie dificilă și să lucreze în această direcție. Dacă cititorul a fost întotdeauna interesat de programare, dar nu a știut de unde să înceapă, atunci cartea „Filosofia Java” va fi un ghid excelent de pornire în această chestiune. Autorul, Bruce Eckel, este un adevărat vrăjitor al computerelor și explică rapid principiile de bază ale lucrului cu codul folosind un limbaj clar.

Limbajul Java este considerat unul dintre cele mai populare limbaje de programare din întreaga lume. Acest lucru se datorează flexibilității sale ridicate și posibilității de aplicare a acestuia în aproape orice domeniu legat de jocuri, software etc. Cartea pentru începători „Filosofia Java” vă va ajuta să stăpâniți principalele fundamentale, precum și conceptele cheie, care vă permite să faceți o bază excelentă pentru un studiu mai profund și perfect al științei programării. Bruce Eckel a făcut o treabă cu adevărat colosală, oferind sute de exemple vii și explicând în detaliu toate punctele cheie de-a lungul cărții sale. Cu ajutorul acestui ghid, orice utilizator care dorește să învețe limbajul Java va putea să-și stabilească o bază de cunoștințe excelentă și, pe baza acestora, să înceapă un studiu aprofundat.

Autorul recomandă citirea cărții sale tuturor începătorilor și persoanelor care tocmai au început să facă programare de bază în limbajul Java. „Filosofia Java” este un ghid pentru a învăța rapid și eficient elementele de bază ale lucrului cu Java. Cartea acordă atenție tuturor lucrurilor mărunte, precum și subtilităților, începând cu interfața și setările de bază și terminând cu combinații și tehnici complexe, care sunt prezentate într-un exemplu real folosind comenzi și coduri clare cu comentarii de la autor.

Bruce Eckel vă va ajuta să vă concentrați asupra scopului principal și asupra filozofiei utilizării Java pentru muncă, afaceri și alte domenii. Autorul arată, de asemenea, multe exemple de probleme, vorbește despre motivele apariției lor și despre principalele metode de depanare a problemelor din codul programului. Specialiștii care lucrează în domeniul programării au apreciat foarte mult cartea „Filosofia Java”, deoarece este un manual de dezvoltare care te va ajuta să înveți mai bine limbajul Java. Deși aceasta este literatură de specialitate, este mult mai ușor de citit decât alte cărți de gen similar

Pe site-ul nostru literar puteți descărca gratuit cartea „Filosofia Java” de Bruce Eckel în formate potrivite pentru diferite dispozitive - epub, fb2, txt, rtf. Îți place să citești cărți și să fii mereu la curent cu noile lansări? Avem o selecție largă de cărți de diferite genuri: clasice, ficțiune modernă, literatură psihologică și publicații pentru copii. În plus, oferim articole interesante și educative pentru scriitori aspiranți și pentru toți cei care doresc să învețe să scrie frumos. Fiecare dintre vizitatorii noștri va putea găsi ceva util și interesant pentru ei înșiși.

Capitolul 11. Colecții de obiecte

Întrebări
1. Ce este interfața Collection?

Răspuns

Interfața Collection este interfața rădăcină care descrie funcționalitatea generală a tuturor containerelor secvențiale (p. 301).


2. Pot fi folosite containerele pentru depozitarea primitivelor?

Răspuns

Primitivele nu pot acționa ca elemente container. Doar referințele la obiecte pot fi plasate într-un container. Cu toate acestea, mecanismul Autoboxing convertește automat primitivul într-un tip de obiect. Prin urmare, programatorul poate „uita” de limitarea de mai sus.
(a răspuns împreună cu dl.)


3. Ce metodă de adăugare a elementelor la containerul ArrayList este de preferat:
Arrays.asList sau Collections.addAll și de ce?

Răspuns

Collections.addAll este preferat datorită performanței sale mai bune (p. 282).


4. Listați mai multe metode disponibile când lucrați cu ArrayList.

Răspuns

„contains(Object o)” – verificați prezența unui element în matrice.
„indexOf(Object o)” – obține indexul elementului.
„subList(index1, index2)” - copiați unele elemente într-un container nou.
„containsAll(Object o)” - verifică prezența elementelor în container.


5. Ce returnează metoda remove() când este apelată pe un container de tip Queue?

Răspuns

Metoda Queue.remove() nu numai că elimină elementul head al cozii, dar returnează și valoarea șirului său.


6. Ce operațiuni sunt mai rapide atunci când lucrați cu o Lista LinkedList în comparație cu o Lista Array?

Răspuns

Inserarea și ștergerea elementelor din mijlocul listei este mai rapidă atunci când utilizați LinkedList (p. 291).


7. Ce tipuri de containere pot fi implementate folosind LinkedList?

Răspuns

Stack, coada, deque.


8. Cum diferă familia Set container de familia List container? (mulțumesc domnului D pentru editare)

Răspuns

În familia Set de containere, datele pot fi stocate doar într-o singură instanță (p. 294)


9. Va apărea o excepție atunci când încercați să adăugați un element la un set care este deja prezent în el?

Răspuns

Nu va apărea nicio excepție.


10. Prin ce diferă containerul PriorityQueue de Queue?

Răspuns

Elementele dintr-o Coadă Prioritară pot fi sortate în funcție de anumite reguli.


11. Pentru ce este folosit Comparator când este aplicat la PriorityQueue?

Răspuns

Comparator vă permite să setați reguli de sortare pentru elementele PriorityQueue.


12. Ce înseamnă prefixele „Tree” și „Hash”, „LinkedHash”, de exemplu, pentru tipul de container Set (TreeSet, HashSet, LinkedHashSet)

Răspuns

Prefixul „Arborele” înseamnă că elementele containerului sunt stocate în ordine sortată
(de exemplu, alfabetic sau crescător) Prefixul „Hash” indică faptul că containerul implementează hashing pentru a accelera recuperarea. Prefixul „LinkedHash” înseamnă că containerul stochează elemente în ordinea în care au fost introduse, oferind în același timp acces rapid (p. 309)


13. Containerul Map acceptă interfața Iterable?

14. Funcționează sintaxa foreach pentru un container de tip „Hartă”?

Răspuns

Pentru un container de tip „Hartă”, sintaxa foreach nu funcționează deoarece nu acceptă interfața iterabilă


15. Care este principalul avantaj al folosirii unui iterator pentru a accesa elementele unui container?

Răspuns

Iteratorul poate fi folosit pentru containere de diferite tipuri (p. 290).


16. Ce caracteristici noi oferă ListIterator în comparație cu un iterator obișnuit?

Răspuns

ListIterator oferă acces secvenţial la elemente nu numai de la începutul până la sfârşitul containerului, ci şi invers (p. 290).

Exerciții

11. 1. Creați o clasă de fructe. Clasa trebuie să conțină un câmp de greutate int, un constructor care inițializează acest câmp și o metodă printWeight() care imprimă valoarea greutății.
În metoda principală, adăugați câteva obiecte Fruit în containerul List. Apelați printWeight() pe fiecare dintre obiecte în următoarele moduri:
A) folosind metoda get();
B) folosind un iterator.

Răspuns

// Fruit.java public class Fruit ( private int weight = 0; public Fruit(int weight) ( this.weight = weight; ) public void printWeight() ( System.out.println("Greutatea este: " + greutate); ) ) // Apply.java import java.util.*; public class Apply ( public static void main(String args) ( List fructe = Arrays.asList(Fructul nou(10), Fructul nou(20)); // a System.out.println("Sarcina a: "); pentru (Fruit f: fructe) ( f.printWeight(); ) // b System.out.println("Sarcina b: "); Iterator it = fructe.iterator(); while(it.hasNext()) ( it.next().printWeight(); ) ) )

11.2. Puneți clasa Fructe de la 11.1 în containerul hărții. Lăsați ca numele proprietarului să fie specificat ca cheie și un obiect de tip Fruit ca valoare. Implementați o iterație peste fiecare obiect Fruit cu cheie și apelați metoda printWeight() pe obiectul găsit: folosind foreach; folosind iteratorul.

Răspuns

Mulțumim carantino pentru versiunea compactă a soluției iteratoare.
clasa Fructe - vezi sarcina 11.2

Import java.util.*; import java.util.Map.Entry; public class Apply ( public static void main(String args) ( // Folosiți HashMap deoarece sortarea nu este necesară Hartă fruct = nou HashMap (); fruit.put("Bob", fruct nou(10)); fruct.put(„Maria”, fruct nou(20)); // repetare folosind foreach System.out.println("Cu foreach"); for (Cheie String: fruit.keySet()) ( fruit.get(key).printWeight(); ) // iterare folosind un iterator System.out.println("Cu iterator"); Iterator > it = fruit.entrySet().iterator(); în timp ce (it.hasNext()) ( it.next().getValue().printWeight(); ) ) )

11.3. Folosind Comparator pentru PriorityQueue, asigurați-vă că variabilele șir sunt sortate după dimensiune.

Răspuns

Notă: exemplul este preluat de pe Internet.
// StringComparator.java import java.util.Comparator; Clasa publică StringComparator implementează Comparator ( @Override public int compare(String s1, String s2) (if (s1.length())< s2.length()) { return -1; } if(s1.length() >s2.lungime()) ( return 1; ) return 0; ) ) // PriorityQueue.java import java.util.Comparator; import java.util.PriorityQueue; clasă publică PriorityQueueUse ( public static void main(String args) ( Comparator comparator = new StringComparator(); PriorityQueue coadă = priorityQueue nou (10, comparator); queue.add("abcde"); queue.add("abc"); queue.add("abcdefghi"); queue.add("a"); // Elementele din coadă NU sunt plasate în ordinea crescătoare a lungimii String System.out.println("Înainte de a elimina:"); System.out.println(coadă); // Dar elementele sunt eliminate din coadă În ordinea crescătoare a lungimii String System.out.println(); System.out.println("Uitați-vă la ordinea de eliminare: "); în timp ce (queue.size() != 0) ( System.out.println(queue.remove()); ) ) )

Traducerea exercițiilor din cartea originală:
11.4. Creați o nouă clasă Gerbil cu un câmp int gerbilNumber. Lăsați câmpul să fie inițializat de constructor. De asemenea, creați o metodă hop() care afișează „Numărul lui Gerbil care este săritul este: ” și valoarea variabilei gerbilNumber. Puneți obiectele Gerbil într-un container ArrayList. Implementați o metodă get() pentru a itera prin listă, apelând o metodă hop() pe fiecare dintre aceste obiecte.

11.5. Modificați SimpleCollection.java pentru a utiliza metoda Set pentru variabila „c”. Modificați innerclasses/Sequence.java astfel încât să poată fi adăugat acolo orice număr de elemente.

11.6. Scrieți o clasă Generator care conține o listă cu numele personajelor filmelor preferate (Obiecte de tip String). Lăsați fiecare obiect din această listă să fie returnat folosind metoda next(). Când ajungeți la sfârșitul listei create, trebuie să reveniți la începutul listei.
Utilizați clasa Generator pentru a popula containere precum ArrayList, LinkedList, HashSet, LinkedHashSet, TreeSet. Scrieți o metodă universală care să afișeze conținutul fiecărei matrice.

11.7. Modificați ListFeatures.java pentru a utiliza numere întregi în loc de animale de companie. Explicați diferențele de performanță rezultate din această modificare.

11.8. Repetați exercițiul 11.7 pentru ListFeatures.java, dar înlocuiți Pets cu șiruri.

11.9. Creați o clasă care generează o matrice inițializată de obiecte din altă clasă. Utilizați această matrice pentru a umple un container de tip Listă. Creați un alt container folosind subList() pe List. Apoi eliminați elementele pe care le-ați preluat folosind subList() din containerul din care le-ați preluat.

11.10. Un exercițiu jucăuș despre utilizarea diferitelor recipiente și metodele acestora (inventate independent)
Să avem o listă de cheltuieli, formată inițial din 3 elemente: „mâncare”, „medicament”, „divertisment”. Este necesar să scrieți aceste elemente în containerul Listă, iar ordinea lor nu ar trebui să se schimbe.

1) Ne-am dat seama brusc că am uitat să adăugăm pe listă cheltuielile de rambursare a creditului. Trebuie să plasați intrarea „taxe” între „alimente” și „medicament” fără a utiliza direct indicii de intrare.
2) Soția a adus o listă suplimentară separată de cheltuieli cu mențiunile: „palton”, „restaurant”. Nu este nimic de făcut: adăugați cheltuieli la sfârșitul listei (ca să nu vă amăgiți).
3) Totuși, soacra mea ne-a mai adus câteva articole: „teatru”, „decor pentru casă” și „medicament”. Poate ai avut deja unele dintre aceste puncte. Pentru orice eventualitate, copiem conținutul primului container într-un nou container de tip Set și apoi, fără ezitare, adăugăm aceste articole la sfârșitul listei.
4) Fără ezitare, am creat o listă dinamică asociativă de hartă a cheltuielilor , unde Integer reprezintă costurile planificate pentru fiecare element de cheltuială (alegeți singur sumele).
5) Ne-am îmbogățit brusc și am decis să creștem suma tuturor cheltuielilor cu 30%. Scrie o metodă care să facă acest lucru pentru tine.
6) Opreste-te! Ne-am săturat de „decorarea casei!” Și, poate, se cheltuiește prea mult pe haină. Adăugați aceste articole într-o nouă Listă și treceți-o la metoda, care, după ce a citit această fișă, va găsi articolele de cheltuieli corespunzătoare în containerul Hartă și le va reduce cu... 80%!
7) Să dăm vina pentru unele dintre cheltuieli pe soacra. Mai mult, o vom surprinde! Să generăm două numere aleatorii care vor determina indicii de început și de sfârșit, toate cheltuielile între care vor fi înregistrate într-o Listă separată (care mai târziu va fi strecurată de soacra). Să nu uităm să actualizăm harta eliminând elementele de cheltuieli relevante din ea.
8) Să scriem o metodă care să determine unde se duce cea mai mică sumă de cheltuieli, să tipărim numele acestor cheltuieli și să scoatem cu mândrie acest articol din listă.
9) Totuși, la ușa noastră au ajuns consumabile suplimentare: „mâncare” și „restaurant”, concepute sub forma unei alte matrice! Să verificăm dacă aceste articole sunt pe lista noastră? Și dacă există cel puțin o cheltuială, atunci sub nicio formă nu le vom adăuga! Dacă nu există nimic din toate acestea, atunci (nimic nu se poate face), adăugați ambele puncte deodată (ce foame îmi este!).
10) Suntem nebuni! Să citim din lista Hartă toate sumele întregi ale cheltuielilor rămase pe care le avem, să le scriem într-un container „unele”, care el însuși le va sorta pentru noi în ordine crescătoare, apoi le va amesteca și șterge frenetic, trecând în ordine inversă, folosind frenetic un iterator special pentru aceasta.