Documente Academic
Documente Profesional
Documente Cultură
3
64. Ce se va intampla la executia urmatoarei secvente?
int test = 0, infinit=0;
try { infinit=1/0; test++; }
catch(Exception e) { test++; }
finally {test++; }
System.out.println(”test=” + test + ” infinit=” + infinit);
test=2 infinit=0 (la 1/0 da exceptie; infinit nu se modifica; sare la catch (deci primul test++ nu se executa) si apoi in finally (care se executa
indiferent daca apar exceptii sau nu)
65. Va fi compilata secventa de mai jos ? Daca da, care este mesajul afisat la executie ?
class A {
A(int x) {System.out.println(”apel constructor A”); } } NU deoarece B extends A, B() apeleaza constructorul implicit A(),
class B extends A { dar acesta nu exista (datorita existentei deja a unui constructor in
B() {System.out.println(”apel constructor B”); } } clasa A) (cel implicit e creat doar daca nu exista nici un alt
public class C { constructor in clasa A).
public static void main(String args[]) { B b = new B(); } }
66. Scrieti metodele getter si setter pentru variabila de tip Point cu numele location.
Point getLocation(); double getX(); double getY();
void setLocation(float x,float y); void setLocation(int x,int y);
void setLocation(Point p) (cred ca asta trebuia; numele location e al variabilei sau a metodelor ? Daca e al metodei, atunci se exclud metodele
getX(), getY() )
67. Fie a, b doua variabile booleene. Care este valoarea de adevar a expresiei: !(a && b) == (!a && !b) ?
e valoarea de adevar a expresiei a==b; daca a si b au aceeasi valoare de adevar, valoarea expresiei este true, in caz contrar e false. (Nu e nici o
capcana; am testat cele 4 cazuri posibile pentru uplul (a,b) si rezultatul a fost conform asteptarilor)
68. Ce exceptie va genera urmatoarea secventa de cod?
java.awt.Panel p[]=new java.awt.Panel[2];
p[0].setLocation(0,0);
NullPointerException; p[0] trebuie initializat (p[0]=new java.awt.Panel() si apoi p[0].setLocation(0,0))
69. Care este diferenta intre clasele TreeMap si HashMap ?
In TreeMap, spre deosebire de HashMap, reprezentarea e sub forma de arbore, iar elementele sunt ordonate crescator.
70. Ce intelegeti prin termenul portabilitate ?
Java este un limbaj independent de platforma de lucru, aceeasi aplicatie ruland fara nici o modificare si fara a necesita recompilarea ei pe
sisteme de operare diferite cum ar fi Windows, Linux, Mac OS, Solaris, etc. lucru care aduce economii substantiale firmelor dezvoltatoare de
aplicatii. Java este independenta de platforma de lucru (de sistemul de operare).
71. Care va fi valoarea lui z dupa atribuirile de mai jos ? int x=5, y=3, z=(x++ / 2 < –y ? –x : y++);
z=2 (x=6; y=3; 5/2=2 < –y=2)
72. Enumerati cel putin cinci pachete disponibile in JDK 1.3. java.applet; java.awt; java.beans; java.io; java.lang; java.math; java.net;
java.rmi; java.security; java.sql; java.text; java.util (am intrat in C:\jdk1.3\src\java)
73. Care este motivul pentru secventa de mai jos nu va fi compilata ?
interface Hello{
String sayHello(); }
class HelloImp1 implements Hello{
String sayHello() {return ”Hello”;}}
in clasa HelloImo1 functia trebuie declarata public (modificatorul de acces implicit in interfata pentru metode e public, iar pentru clasa e
package); corect deci : public String sayHello() {return ”Hello”;}
74. Cum poate fi controlat accesul concurent al mai multor fire de executie la o resursa comuna gestionata prin
intermediul unei metode ? Acea metoda se declara synchronized; un singur fir de executie va putea folosi la un moment dat resursa comuna
(indiferent daca apeleaza sau nu metoda respectiva)
75. Care este rolul clasei ResultSetMetaData? Extragerea si prelucrarea rezultatelor dintr-un ResultSet.
76. Care sunt erorile ce vor fi detectate la compilarea fisierului A.java ce contine urmatoarele declaratii de clase:
public class A {}
public class B extends A {}
class C extends A, B {}
clasa C nu poate extinde doua clase (eroarea de la compilare: dupa extends A trebuie {, adica trebuie corpul clasei C)
clasa B trebuie declarata intr-un fisier separat (B.java); intr-un fisier java poate exista o singura clasa publica (cea cu main-ul)
77. Care este rolul metodei forName din clasa java.lang.Class ?
Conform java-help:”Returns the Class object associated with the class or interface with the given string name.”; returneaza un obiect de tip
Class corespunzator clasei sau interfetei al carei nume este dat drept argument functiei.
Aceasta metoda va ıncarca respectiva clasa folosind class loader-ul obiectului curent (care o apeleaza).
78. Care din instantierile de mai jos este (sunt) gresita (gresite):
a) int a[10]=new int[]; (evident) c) char c[]={”O”,”K”}; (tipuri incompatibile:”O” e String)
b) double []b=new double[10]; d) Class[]=new Class[]{String.class}; (nu exista String.class)
79. Dati un exemplu de utilizare a clasei FileDescriptor. public FileReader(FileDescriptor fd), pag 103
4
80. Cum pot fi tratate evenimentele generate de un meniu ?
meniu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {…}});
81. Pot exista interfete vide ? Daca nu, de ce ? Daca da, dati exemplu.
public interface ActionListener extends java.util.EventListener{
public void actionPerformed( ActionEvent e ); }
Toate interfetele de tip "listener" sunt subinterfetele lui java.util.EventListener. Aceasta din urma este o interfata vida. Interfetele ajuta la
identificarea obiectelor capabile de o primi anumite tipuri de evenimente. Interfata MouseListener descrie metodele necesare primirii
evenimentelor MouseEvent ( intrarea mouseului intr-o zana sau iesirea dintr-o zona, apasarea sau eliberarea unui butom al mouseului.
MouseMotionListener este o interfata pentru a identifica evenimentele de tip miscarea(move) sau tarairea (drag) mouseului.
82. Ce reprezinta conceptul de persistenta usoara ? Serializarea permite persistenta obiectelor, ceea ce ınseamna ca durata de viata a
unui obiect nu este determinata de executia unui program ın care acesta este definit - obiectul poate exista si ıntre apelurile programelor care ıl
folosesc. Acest lucru se realizeaza prin serializarea obiectului si scrierea lui pe disc ınainte de terminarea unui program, apoi, la relansarea
programului, obiectul va fi citit de pe disc si starea lui refacuta. Acest tip de persistenta a obiectelor se numeste persistenta usoara, ıntrucat ea
trebuie efectuata explicit de catre programator si nu este realizata automat de catre sistem.
83. Cum trebuie declarata metoda top a clasei Stack (ce descrie o stiva de obiecte) asfel incat aceasta sa returneze obiectul
din varful stivei, sau sa arunce o exceptie de tipul EmptyStackException daca stiva este vida ?
public Object top() throws Exception {
if ( this.nrElementeDinStiva>0)
return EmptyStackException;
else
return this.Elemente[nrElementeDinStiva];
}
84. Descrieti succint o modalitate de creare a unei clase din care sa poata fi instantiate fire de executie.
class FirExec implements Runnable{
private fir=null;
public FirExec ()
{
if (fir == null) {
fir = new Thread(this);
fir.start();
}
}
public void run() {…}
sau direct: class FirExec extends Thread { public void run() {…}}
85. Se pot instantia obiecte ale clasei Math ? Se poate extinde clasa Math ? Explicati.
Nu. Spre deosebire de limbajele de programare procedurale, ın Java nu putem avea functii globale definite ca atare, ıntrucat ”orice este un obiect”. Din acest
motiv chiar si metodele care au o functionalitate globala trebuie implementate ın cadrul unor clase. Acest lucru se va face prin intermediul metodelor de clasa
(globale), deoarece acestea nu depind de starea particulara a obiectelor din clasa respectiva. De exemplu, sa consideram functia sqrt care extrage radicalul unui
numar si care se gaseste ın clasa Math. Daca nu ar fi fost functie de clasa, apelul ei ar fi trebuit facut astfel (incorect, de altfel):
Math obj = new Math(); double rad = obj.sqrt(121); // Incorect ! ceea ce ar fi fost extrem de neplacut... Fiind ınsa metoda statica ea poate fi apelata prin:
Math.sqrt(121) . Asadar, functiile globale necesare unei aplicatii vor fi grupate corespunzator ın diverse clase si implementate ca metode statice.
86. Care din instantierile de mai jos este (sunt) gresita (gresite):
a) List a=new List(); // (List e interfata; nu poate fi instantiata);
b) List c=new ArrayList();
c) LinkedList b=new List(); //(din acelasi motiv);
d) AbstractList d=new LinkedList(); // e corect: LinkedList extinde AbstractList; eu la examen am citit ArrayList in loc de AbstractList si am
zis ca d) e gresit;
87. Care va fi valoarea variabilei s dupa executia blocului de instructiuni?
int s=0;
try {
java.awt.Point p[] = new java.awt.Point[10];
p[0].setLocation(-1,-1); s+=1;
}
catch(IllegalArgumentException e) { s+=2; }
catch(NullPointerException e) { s+=3; }
finally { s+=4; }
a) 0
b) 1
c) 5
d) 6
e) 7 (corect)
5
88. Scrieti o metoda contains(Point p, Point p1, Point p2) care sa testeze daca un punct p se gaseste pe dreapta determinata
de punctele p1 si p2. Se va folosi ecuatia dreaptei: (x,y) se gaseste pe dreapta (x1,y1) – (x2, y2) daca: y - y1 = (x–x1) * (y2–y1) / (x2–x1);
89. Scrieti un program care primeste ca argument de la linia de comanda un numar de puncte si afiseaza nota obtinuta
conform tabelului de mai jos:
Punctaj 40-36 35-31 30-26 25-21 20-16 15-11 10-6 5-0
10 9 8 7 6 5 4 L
import java.io.*;
class test{
public static void main(String [] s) {
int puncte;
boolean gata=false;
//ca sa ies din program dau o valoare in afara intervalului
while(!gata) {
System.out.println(”Introduceti nr de puncte: “);
System.out.flush();
try {
//citesc de la tastatura
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String linie = in.readLine();
try {
puncte = Integer.parseInt(linie);
if (puncte < 0) gata=true;
else
if (puncte>35) System.out.println(”aveti nota 10″);
else
if (puncte<=35 && puncte >=31 ) System.out.println(”aveti nota 9″);
else
if (puncte<=30 && puncte >=26 ) System.out.println(”aveti nota 8″);
else
if (puncte<=25 && puncte >=21 ) System.out.println(”aveti nota 7″);
else
if (puncte<=20 && puncte >=16 ) System.out.println(”aveti nota 6″);
else
if (puncte<=15 && puncte >=11 ) System.out.println(”aveti nota 5″);
else
if (puncte<=10 && puncte >=6 ) System.out.println(”aveti nota 4″);
else System.out.println(”nu aveti nota!!!”);
}
catch (NumberFormatException e1) {System.out.println(”Introduceti un nr intreg!!!”); }
}
catch (IOException e2) { System.out.println(”Intrare gresita de la tastatura “+e2.toString());}
}
}}
90. Scrieti o metoda care returneaza un vector cu primele n numere ale sirului lui Fibonacci (n este primit ca argument)
public int[] Fibonacci(int n) throws Exception {
int v[]=new int[n];
if(n<0)
throw new Exception();
v[0]=1;
if(1<=n)
v[1]=1;
if(2<=n)
for(int i=2;i<n;i++)
v[i]=v[i-1]+v[i-2];
return v;
}
91. Care din afirmatiile urmatoare referitoare la colectii nu este adevarata ?
a) Clasa TreeMap mentine sortate elementele sale.
b) Singura modalitate de a parcurge o multime de tip HashSet, fara a folosi alte structuri de date, este prin intermediul iteratorilor.
c) Clasa Collection este superclasa tuturor claselor ce descriu colectii.
d) Intr-un obiect de tip HashMap, cheia si valoarea sunt de tip Object.
e) Orice colectie de elemente poate fi sortata folosind metoda sort din clasa Collections. [corect]
6
92. Scrieti o clasa Java care sa permita instantierea a maxim 100 de obiecte de tipul ei.
class A {
static int n=0;
private A() {}
public static A newInstance() throws Exception {
if (n < 100) {
n ++;
return new A();
}
throw new Exception("Too many objects!");
}
}
93. Ce se va afisa in urma executiei seventei?
String s1 = new String("hello"), s2="Hello".toLowerCase();
System.out.println(s1 == s2);
a) Secventa nu va fi compilata, deoarece variabila s2 nu este instantiata.
b) Secventa nu va fi compilata, deoarece sirurile nu pot fi comparate cu operatorul ==.
c) false, deoarece s1 si s2 au adrese de memorie diferite. [corect]
d) true, deoarece toLowerCase converteste un sir la litere mici.
e) true, deoarece compararea sirurilor nu tine cont de litere mici sau mari.
94. Care din urmatoarele afirmatii referitoare la cele 4 linii numerotate ale metodei main este corecta:
public class Test {
public static String sayHello() {
return "Hello"; }
public static void main(String args[]) {
Test t = new Test();
String s = Test.sayHello(); // 1
t.sayHello().toUpperCase(); // 2
System.out.println(sayHello()); // 3
args[0] = t.sayHello(); // 4
}
}
a) Totul este corect, clasa va fi compilata.
b) Linia 1 este gresita, deoarece metodele de clasa nu pot fi apelate astfel.
c) Linia 2 este gresita, deoarece metoda sayHello returneaza un sir de caractere.
d) Linia 3 este gresita, deoarece metoda sayHello este statica.
e) Linia 4 este gresita, deoarece este posibil ca vectorul args sa nu fie instantiat. [corect]
95. Ce se va intampla la compilarea fisierului Test.java ce contine clasele urmatoare?
class A {
double x=0;
A(double x) {this.x = x;}
A(float x) {this.x = x;}
}
class B extends A {
double y=0;
B(double x) {
y=0;
super(x);
}
}
a) Compilarea va fi cu succes.
b) Compilarea va fi cu succes, dar la executie instantierile obiectelor din clasa A pot provoca exceptii.
c) Clasa B nu va fi compilata deoarece nu supradefineste ambii constructori.
d) Clasa B nu va fi compilata deoarece constructorul este definit gresit. [corect]
e) Clasa A nu va fi compilata deoarece al doilea constructor este gresit.
96. Care din afirmatiile urmatoare referitoare la serializarea obiectelor nu este adevarata ?
a) Pentru a fi serializabila, o clasa trebuie obligatoriu sa implementeze una din interfetele Serializable sau Externalizable.
b) Obiectele serializate pot fi scrise atat in fisiere cat si in memorie.
c) Variabilele declarate cu modificatorii transient sau private nu participa la serializare. [corect]
d) Mecanismul implicit de serializare a obiectelor unei clase poate fi modificat.
e) Clasele ObjectInputStream si ObjectOutputStream permit si serializarea tipurilor primitive de date.
7
97. Scrieti o un program Java care sa memoreze intr-un obiect de tip HashMap cuvintele unui text si numarul lor de
aparitii. Textul va fi citit de la tastatura iar cuvintele sunt secvente de caractere delimitate prin spatiu, virgula sau punct.
import java.util.*;
import java.io.*;
public class AnalizaText {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String text = in.readLine();
StringTokenizer st = new StringTokenizer(text, " ,.");
HashMap hm = new HashMap();
while (st.hasMoreTokens()) {
String cuvant = st.nextToken();
Integer n = (Integer) hm.get(cuvant);
n = (n == null ? new Integer(1) : new Integer(n.intValue() + 1));
hm.put(cuvant, n);
}
System.out.println(hm);
}
}
98. In urma compilarii fisierului Test.java rezultat, pe langa fisierul Test.class si fisierul Test$1.class. Care este explicatia
acestui fapt ?
a) In fisierul Test.java exista mai exista o clasa cu numele Test$1.
b) Clasa Test contine o subclasa cu numele Test$1.
c) Clasa Test contine o clasa interna statica cu numele 1.
d) Clasa Test contine o clasa anonima. [corect] Test$1.class este un fisier temporar creat de catre compilator.
99.Care va fi valoarea variabilei counter dupa executia blocului de instructiuni?
int counter=0;
try {
Objectobj[]=new Object[10]; counter++;
obj[0] = new String("hello"); counter++;
counter++;
}
catch(Exception e) { counter++; }
finally { counter++; }
a) 1
b) 2
c) 3
d) 4
e) 5
100. Care vor fi erorile depistate la compilarea clasei de mai jos?
class A {
private int x=0;
protected static int y=0;
public void f() { x=1; y=1; }
static void g() { x=2; y=2; }
}
a) Variabila x nu poate fi apelata dintr-un context static
b) Variabila x nu poate fi apelata dintr-un contex ne-static
c) Variabila y nu poate fi apelata dintr-un context static
d) Variabila y nu poate fi apelata dintr-un context ne-static
e) Metoda g nu are modificator de acces
101. Ce se va întâmpla la compilarea urmãtorului program:
public class SubiectLicentaUnu {
int i = 3, j = 4;
public static void main(String [] arg) {
System.out.println(i ++ + ++ j); }
}
a) va apare eroare la compilare deoarece parametrul metodei main() trebuie sã fie String args []
b) va apare eroare la compilare deoarece din funcþia staticã main() nu putem accesa variabilele nestatice i si j
c) va apare eroare la compilare deoarece nu s-au inserat paranteze între operatorii ++, adicã (i++) si (++j)
d) se va afisa 8
e) se va afisa 9
8
102. Care este numarul de octeti ce vor fi folositi pentru memorarea valorilor variabilelor membre ale vectorului de obiecte
A a[]=new A[100]:
class A {
final int N=0;
static double PI=3.14;
static char c[] = {'a', 'b', 'c'};
byte c[] = {1, 2, 3};
}
a) 100
b) 417
c) 711
d) 714
e) 2100
103. Care din afirmatiile de mai jos sunt adevarate ?
interface Test { int N=0; void inc(); }
abstract class AbstractImpl
implements Test {}
class TestImpl extends AbstractImpl {
void inc() { N++; }
public static void main(String args[]) { a) Variabila a este definita corect
Test a = new Test(); b) Variabila b este definita corect
TestImpl b = new AbstractImpl(); c) Variabila c este definita corect
AbstractImpl c = new TestImpl(); } d) Definitia metodei inc este gresita
} e) Corpul metodei inc este gresit
104. Ce se va intampla la compilarea fisierului Stiva.java ce contine clasele alaturate ?
class ExceptieStiva extends Exception {}
public class Stiva {
Object v[] = new Object[100]; int top=0;
public void push(Object x) { v[top]=x;
top++; }
public void pop(){
if (top == 0) throw new ExceptieStiva();
top --;
}
public Object top() { return v[top-1]; }
}
a) Compilarea va fi cu succes si vor rezulta fisierele ExceptieStiva.class si Stiva.class
b) Compilarea va fi cu succes, dar la executie metodele push si top pot fi sursele unor exceptii netratate
c) Clasa ExceptieStiva nu va fi compilata deoarece nu supradefineste constructorul clasei Exception
d) Clasa Stiva nu va fi compilata deoarece metodele push si top nu trateaza exceptiile ce pot aparea.
e) Clasa Stiva nu va fi compilata deoarece metoda pop este incorect definita
105. Care din urmatoarele afirmatii referitoare la appleturi sunt adevarate:
a) Trebuie obligatoriu sa extinda clasa java.applet.Applet
b) Trebuie obligatoriu sa supradefineasca metodele init, start, stop, destroy.
c) Clasele unui applet pot fi grupate in mai multe pachete
d) Un applet trebuie sa defineasca cel putin doua fire de executie
e) Daca appletul nu se gaseste intr-o arhiva jar, clasele sale sunt transferate una cate una in conexiuni HTTP diferite.
106. Care din afirmatiile urmatoare referitoare la fire de executie in Java sunt adevarate ?
a) Orice fir de executie este o instanta a clasei Thread
b) Orice clasa care descrie un fir de executie trebuie sa implementeze obligatoriu interfata Runnable
c) Pentru a controla accesul mai multor fire de executie la o resursa comuna, trebuie sa declaram clasa ce descrie resursa respectiva folosind
modificatorul synchronized
d) Un fir de executie poate sa cedeze procesorul altor fire de executie cu aceeasi prioritate, chiar daca nu si-a terminat inca activitatea.
e) Singura modalitate de a opri un fir de executie este prin apelul metodei stop
107. Care din afirmatiile urmatoare referitoare la programare Java in retea sunt adevarate ?
a) O aplicatie Java poate deschide o conexiune cu un URL oarecare si citi informatiile de la acea adresa
b) Un port este un numar reprezentat pe 16 biti
c) Intr-o aplicatie client-server, clasa care descrie serverul trebuie obligatoriu sa creeze cate un fir de executie pentru fiecare client
d) Comunicarea prin datagrame stabileste o conexiune sigura prin care sunt transmise pachete de informatii
e) Exista posibilitatea de a transmite simultan mesaje de la server catre un grup prestabilit de clienti
108. In ce conditii pot declara o clasa private? In nici una
109. Se poate aplica modificatorul synchronized pentru variabile membre ?
9
- java- considerat un pachet (o multime de clase, interfete adunate sub un nume) – default
- tipurile referinta le manevram cu variabile
- newPointerException – nu am creat obiectul
- A a = new A(); a2=a1 (mai fac o referinta); a1=null, a2=null (sterg referintele explicit)
- distrugerea obiectelor: init – cand ies din init obiectul nu mai este referit
- d1.equals(d2) = true, d1==d2 = false, d1 si d2 sunt referinte si adresa lui d1=adresa lui d2. continutul lor e egal
- int v[]=new int[10]; v[10]=0; exceptie pt ca exista numai pana la v[9] – exception handler (trateaza), catch the exception, throw an exception;
IOException este clasa pentru Exception
- metodele trimit exceptia metodei apelante; RuntimeException
- fluxurile primare (primitive – sunt seriale); fluxurile pentru procesoare ofera functionalitate pt fluxurile primare
- fire de executie – pipe; decorator – wrapper; nu se instantiaza o interfata; pot avea referinta
- inserarea si stergerea merg greu la ArrayList pentru ca shifteaza; accesarea directa merge greu la LinkedList pentru ca merge pas cu pas;
callback – trimiterea unei secvente de cod altei secvente de cod pentru a fi executat acolo
- comparatori, import, packet (director), map=cheie+valoare
- reprezentarea datelor: „text” (fisier), binar-serializare, baze de date orientate obiecte – db.commit(), relatii-BD relationate (nu in arborescente,
multime de uple), XML – JAXB
- FlowLayout – pune elementele unele dupa altele cat timp incap, la dimensiunea preferata
- getImage – pune mana doar pe referinta imaginii; - drawImage (referinta, coordonate, dimensiune, this)
- ImgeObserver (preia imagini) – are o singura metoda ImageUpdate
- Canvas – este deja in Observer
- Shape: draw (deseneaza), fill (umple)
- in AWT ferestrele erau containere; in Swing ferestrele contin un container (containerPane); toate componentele Swing pot juca rol de
container
- programare imperativa secventiala, concurenta, paralela (concurenta pe masini cu mai mult de un procesor), distribuita (arhitectura orientata
pe servicii)
- clasa Thread contine metoda start care invoca metoda run; fir.start() – porneste un fir de executie
- cat timp aplicatia are fire de executie pornite, ea este activa (main-ul nu se inchide); chiar daca moare firul principal, aplicatia este activa daca
acest fie are fii; NotRunnable nu inseamna ca moare; un fir de executie moare (Dead) cand nu mai are nimic de facut; un fir de executia isi
incepe activitatea cu run; daca celelalte fire care nu sunt Daemoni isi incheie activitatea, si firele care sunt Daemoni isi vor incheia automat
activitatea; yield se aplica in cazul aceleiasi prioritati; get si put – sectiuni critice; fiecare obiect in Java are un monitor
- ce este un proxy? Proxy sta intre client si server; clientul trimite cererile sale la server, dar acestea ajung prima data la proxy, care le selecteaza
si apoi trimite serverului doar ce vrea el
- componente in retea, sistem de distributie
- aplicatii web – paradigma cerere-raspuns
- dezavantaje aplicatii web – sunt dependente de retea; interfata grafica trebuie facuta cu cea mai mare grija
- appleturile se executa pe masina clientului (client.site); aplicatiile web se executa la server (server.site)
- dezavantaje applet: daca vor sa acceseze ceva de la server pot avea probleme cu proxy; restrictii de securitate
- un applet poate face orice, este o clasa Java 100%
- nu browserul stie sa aplice appleturi ci anumite containere introduse in browser
- appletViewer – ignora toate tag-urile html in afara de applet
- clasa applet nu este abstracta; toate metodele ei sunt instantiate; init (ii dau sansa sa construiasca), start (cod care creeaza fire de executie si il
pornesc), stop (cod ce opreste firele de executie), metode - destroy
- daca am mai multe clase+resurse Æ jar
- identificatorul depinde de baza de date
- set de instructiuni ce se executa in mod atomic
- tranzactie – unitate atomica de lucru de comunicare cu baza de date (ori faci toate comenzile, ori nu faci nici una)
- commit si rollback – incheierea tranzactiei
Clasa TreeMap mentine sortate elementele sale.
Singura modalitate de a parcurge o multime de tip HashSet, fara a folosi alte structuri de date, este prin intermediul iteratorilor.
Clasa Collection este superclasa tuturor claselor ce descriu colectii.
Intr-un obiect de tip HashMap, cheia si valoarea sunt de tip Object.
Pentru a fi serializabila, o clasa trebuie obligatoriu sa implementeze una din interfetele Serializable sau Externalizable.
Obiectele serializate pot fi scrise atat in fisiere cat si in memorie.
Mecanismul implicit de serializare a obiectelor unei clase poate fi modificat.
Clasele ObjectInputStream si ObjectOutputStream permit si serializarea tipurilor primitive de date.
Appleturile trebuie obligatoriu sa extinda clasa java.applet.Applet
Daca appletul nu se gaseste intr-o arhiva jar, clasele sale sunt transferate una cate una in conexiuni HTTP diferite.
Orice fir de executie este o instanta a clasei Thread
Orice clasa care descrie un fir de executie trebuie sa implementeze obligatoriu interfata Runnable
Un fir de executie poate sa cedeze procesorul altor fire de executie cu aceeasi prioritate, chiar daca nu si-a terminat inca activitatea.
O aplicatie Java poate deschide o conexiune cu un URL oarecare si citi informatiile de la acea adresa
Un port este un numar reprezentat pe 16 biti
Exista posibilitatea de a transmite simultan mesaje de la server catre un grup prestabilit de clienti
10