This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
laboratoare:constructori-referinte [2018/07/27 17:49] Adriana Draghici [Referințe. Implicații în transferul de parametri] |
laboratoare:constructori-referinte [2019/01/06 17:19] Laurentiu Stamate [Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
= Constructori și referințe = | = Constructori și referințe = | ||
- | |||
- | * Responsabil: Laurențiu Stamate | ||
- | * Data publicării: 07.10.2017 | ||
- | * Data ultimei modificări: 07.10.2017 | ||
- | |||
== Obiective == | == Obiective == | ||
Line 215: | Line 210: | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
Student s = new Student("Alice", 5); | Student s = new Student("Alice", 5); | ||
- | changeReference(s); // 1 | + | changeReference(s); // apel (1) |
- | System.out.println(s.getName()); // 1' | + | System.out.println(s.getName()); // "Alice" |
- | changeObject(s); // 2 | + | changeObject(s); // apel (2) |
- | System.out.println(s.averageGrade); // 2' | + | System.out.println(s.averageGrade); // "10" |
} | } | ||
} | } | ||
</code> | </code> | ||
| | ||
- | Astfel, apelul (1) nu are nici un efect în metoda ''main'' pentru că metoda ''changeReference'' are ca efect asignarea unei noi valori referinței ''s'', copiată pe stivă. Linia (1') va afișa textul: ''Alice''. | + | Astfel, apelul (1) nu are nici un efect în metoda ''main'' pentru că metoda ''changeReference'' are ca efect asignarea unei noi valori referinței ''s'', copiată pe stivă. Se va afișa textul: ''Alice''. |
{{ :laboratoare:constructori-referinte:poza1.png?600 |}} | {{ :laboratoare:constructori-referinte:poza1.png?600 |}} | ||
- | Apelul (2) metodei ''changeObject'' are ca efect modificarea structurii interne a obiectului referit de ''s'' prin schimbarea valorii atributului ''averageGrade''. Linia (2') va afișa textul: ''10''. | + | Apelul (2) metodei ''changeObject'' are ca efect modificarea structurii interne a obiectului referit de ''s'' prin schimbarea valorii atributului ''averageGrade''. Se va afișa textul: ''10''. |
{{ :laboratoare:constructori-referinte:poza2.png?600 |}} | {{ :laboratoare:constructori-referinte:poza2.png?600 |}} | ||
Line 309: | Line 304: | ||
String s1 = "abc"; | String s1 = "abc"; | ||
- | String s2 = s.toUpperCase(); // s does not change; the method returns a reference to a new object which can be accessed using s2 variable | + | String s2 = s1.toUpperCase(); // s1 does not change; the method returns a reference to a new object which can be accessed using s2 variable |
- | s = s.toUpperCase(); // s is now a reference to a new object | + | s1 = s1.toUpperCase(); // s1 is now a reference to a new object |
</code> | </code> | ||
<note tip> | <note tip> | ||
Line 440: | Line 435: | ||
== Resurse == | == Resurse == | ||
+ | |||
+ | * {{:laboratoare:constructori-referinte:lab2-sol.zip|Soluție}} | ||
* <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF laborator</a></html> | * <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF laborator</a></html> | ||
- | * **{{:laboratoare:constructori-referinte:constructori-referinte-sol.zip | Soluție}}** | ||
- | |||
- | |||
- | |||
== Referințe == | == Referințe == | ||