Java Software Development I exam 1Z0-803 si 804
Java Lexicon
Teodor Iancu, 2015 version. 0.3
A B C D E F G H I J K L M N O R S T U V Z X Y nesortate
Abstract Class
O clasa abstracta este o clasa generalizanta si simplificanta
- nu poate fi instantata (nu se pot obtine obiecte)
- nu poate fi instantiata (direct ci numai in subclasse)
-
poate avea atat methode abstracte cat si neabstracte
- o singura methoda "abstract" intr-o classa, face ca intreaga classa sa devina abstracta
- Prima classa concreta care extinde o classa abstracta trebuie sa implementeze toate methodele abstracte ale acesteia. (numai overridden NU si overloaded ?)
- Methodele unei clase abstracete nu au corp si se termina cu ;
abstract class A {
abstract public String goUp();
}
Access Modifiers (controleaza accesibilitatea clasei si a membrilor sai in/din afara clasei si packetelor) :
public
protected
default
private
Nonacces Modifiers (schimba proprietatile default a claselor si membrilor sai):
abstract
final
static
Array
- Arrays pot primi primitve s-au obiecte, dar un array in sine este mereu el insusi un obiect
- Un Array este un obiect
- Elementele unui array de objecte NU sant create automat pe cand primitvele primesc valori default
- Un array de obiecte poate stoca orice obiect care trece testul IS-A (s-au instanceof()) al tipului de obiect declarat (ex. daca Pisica extends Animale atunci un obiect "Pisica" pote intra intrun array Animale)
- Ultimul element dintr-un array se acceseaza cu ajutorul lui length -1
- o variabila byte poate fi acceptata intr-un array de int
Passing Arrays to methods
- When passing an array to a method, the reference of the array is passed to the method
char[] myPopulatedArray = {'a', 'b', 'c', 'd', 'e'};
length = 1 2 3 4 5 // .length is 5
index = 0 1 2 3 4 // index (zero basiert)
int length = myPopulatedArray.length; // is 5
int lastIndex = myPopulatedArray.length - 1; // is 4
char lastItem = myPopulatedArray[myPopulatedArray.length -1]; // is 'e'
Two-dimensional array
- length
String[][] data = new String [9][200];
System.out.println(data.length); // 9
System.out.println(data[0].length +" "+ data[1].length +" "+ data[8].length); //200 200 200
200 200 200
String[][] data = new String[9][200];
System.out.println(data.length -1); // 8
System.out.println(data[0].length -1); //199
ArrayLists
- este un "resizable array"
-
poate primi numai objeke nu si primive (wrapper lasa numai impresia de primitive)
- pot contine "entries" duplicate
Class
- Intr-un fisier de cod sursa, nu poate exixta decat o singura classa declarata public iar numele classei trebuie sa corespunda cu numele fisierului (Dog.java === public class Dog{})
dar poate contine orce nr de classe, interfatesi enums, nepublice
- Putem avea acelasi nume de classa, dar in pakete diferite
- O classa nu poate fi si final si absttract java-kurs
- O classa final nu poate fi mostenita
- A class "implements" an interface. It does not "extend" an interface.
- Any class, whether abstract or concrete, can implement any interface.
- A concrete class can be extended by an abstract or a concrete class.
CLASS ACCESS CONTROLS
Class Access Modifiers
- Classes au doi access modifiers: public, si default (default este control level)
- Classes
au 1 access level: default (package acces)
- O classa cu default acces este vizibila numai de clasesele din acelasi packet
Class Nonacces modifiers
- final, abstract, si strictfp
Constructors si Instantiation
- Chiar si classele abstracte au un constructor
- Constructorii trebuiesc sa aiba acelasi nume cu classa
- Constructorii nu au return type (daca vezi in cod asa ceva, este vorba despre o methoda care are acelasi nume cu classa)
-
Constructori pot folosi oricare acces modifiers (default (fara declarare) si inkl. private)
- Constructori NU pot fi: static, final s-au abstract
- Instanz members sint accesibili numai dupa executia super constructor
- Clasele abstracte au constructori care se executa cand se initializeaza o subclasa concreta
- Interfaces nu au constructori
- Constructori nu pot fi mosteniti (de accea nu se pot suprascrie)
- Un Constructor nu poate fi invocat direct decat de un alt constructor (prin super() sau this())
- in cazul this()
- trebuie sa apara primul in statmentul constructor
- this() si super() nu pot aparea in acelasi constructor
A constructor can access the non-static members of a class.
(A constructor is non-static, and so it can access directly both the static and non-static members of the class.) ??
Encapsulation
- instant variabilile sint protejate prin "private" implementarea numai prin geter si seter
IS-A se refera la mostenire(extends) s-au implementare(implements) O masina ESTE-UN vehicol, Dacia este o masina ESTE-UN Animal (asadar o dacie este o masina si este si un vehicol)
HAS-A inseamna o instanta a unei clase "has a" referenta la o instanza a unei altei clase s-au ale aceleiasi classe. O masina ARE-UN volan
Enums
- este specificarea unei liste de constante asigurate unui anumit tip (luni, marti, sant de constante de tip saptamana)
- un enum nu este un string s-au int ci de tipul declarat javakurs
- un enum poate fi declarat intr-o class proprie s-au ca membru intr-o clasa dar niciodata intr-o metoda
- Un enum declarat in afara unei clase, trebuie sa NU fie marcat ca fiind: static, final, abstract, protected s-au private
- enum pot contine: constructori, metode, variabile, "constant-specific class bodies"
- constantele enum pot trimite argunente la constructorul sau folosind sintaxa: IANUARIE(1), unde literarul 1 este "passed" constructorului eunm
- constructorul enum poate avea argumente iar acestea pot fi suprascrise
- constructori enum nu pot fi NICIODATA invocati direct in cod, ei sant chemati automat cind un enum este initializat
- semicolons ; la sfarsitul declaratiei sint optionale
- MyEnum.value() returneaza un array al valorilor din MyEnums
Floating-point numbers este implicit double (64 bits)
for() daca este true, se executa statmentul si pe urma sa face iteratia
++ -- STATMENT si pe urma x++ x-- s-au ++x --x
I/O
Binar | Text | |
Input | InputStream | Reader |
Output | OutputStream | Writer |
→ DataOutputStream → BufferedOutputStream → FileOutputStream → .../myFile.dat
writeIn(int i)
writeUTF(String s)
← DataInputStream ← BufferedInputStream ← FileInputStream ← ../myFile.dat
readInt()
readUTF()
→ PrintWriter → BufferedWriter → FileWriter → .../myFiele.txt
print()
println()
← BufferedReader ← FileReader ← ../myFile.dat
read()
readLine()
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(fileName.bin))))
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(fileName.bin))))
if() Statment
- acoladele sant optionale
import
- este numai pt a economisi apasare de tastatura
- * este continutul unei pagini
Identifiers
- pot incepe cu o litera, cu underscore _ sau cu (currecy character €,$, etc (pt cod generat automat))
- dupa primul caracter poate contine si cifre
- Clasele trebuie sa inceapa cu o litera mare si sa fie substantive (nouns) de ex.Account, PrintWriter
- Interfetele au nume de adjective (ex: Runnable)
- Methodele au nume combinat de
substantiv si verb (ex. getBalance, doCalculation
)
- Variabilele au nume scurt si descriptiv in CamelCase (buttonWidth)
- Constantele sant scrise cu litera mare separate de _ si sant static si final (MAX_VALUE)
Inheritance
- Mostenirea permite unei clase sa fie subclasa unei superclasse si sa-i mosteneasca variabilile public, protect si methodele accestei classe
- IS-A concept cheie pt. polinorfism, supraincarcare, suprascriere si casting
Interfaces
- Interfetele sant contracte despre ceea ce poate face o classa, dar nu arata nimic despre modul in care urmeaza sa o faca
- Interfetele pot fi implementate de orce classa in orcare ierarhie (arbore) de mostenire
-
Interfatele sant 100% classe abstracte (indiferent daca foloseste modificatorul abstract s-au nu)
- Interfetele pot extinde NUMAI una s-au mai multe interfete I-E (dar NU pot extinde classe)
-
Interfatele NU pot implements nimic (interfate sau class)
- Eine Klasse muß alle Interface Methoden implementieren (oder selbdt abstract sein)
- Interfetele pot avea NUMAI methode abstracte (neconcrete)
- Methodele Interfeteleor sant obligatoriu public si abstract (by default declarearea este optionala)
- Methodele Interfeteleor trebuie sa NU fie static, final, private s-au protected
- Pt ca mehtodele interfatelor sant abstract nu pot fi final, strictfp s-au native
- Constantele si Variabilile interfatelor sant obligatoriu public static si final (declarearea si ordinea este optionala) putem spune ca Interfaces pot declara numai Constante (nu si instanz variabile)
- O clasa abstracta poate implementa o interfata
- O clasa abstracta nu trebuie sa implementeze methodele interfatei (dar prima subclasa concreta trebuie)
- Interfetele pot extind una s-au mai multe interfate
- Interfetele NU pot extinde o classa
- Interfetele NU pot implementa classe s-au interfete
- Interfaces NU au constructori
abstract interface A{
public abstract void oMethoda(); (Abstrakte öffentliche Instanzmezhoden)
public static final int nr = 2; (Öffentlichen Klassen Konstanten)
Initialization Blocks
- static {bla bal }se foloseste pt cand vrei ca acel cod sa fie executat numai o data la incarcarea classei
- fara nimic {bla bla } se executa la fiecare noua instanta imediat dupa ce superconstructorul a fost executat
- variabilile din bloc sant local variable
Literal un literal este o valuare fixa care nu are nevoie de nici o operatiune si pentru afi asigurata unei variabile de orice fel
Local Variables
- Local variables nu au valori "default" de accea trebuiesc initializate inainte a putea fi folosite (int t = 3;)
- Local variables (methods variables) traiesc in STACK
- Local variable (adica declarate intr-o methoda) declarations nu pot avea acces modifiers
- final este singurul modificator disponibil la "local variabile"
Modifiers in Java
element | Data field | Method | Constructor | Class | Interface | ||
---|---|---|---|---|---|---|---|
modifier | top level (outer) |
nested (inner) |
top level (outer) |
nested (inner) |
|||
abstract | no | yes | no | yes | yes | yes | yes |
final | yes | yes | no | yes | yes | no | no |
native | no | yes | no | no | no | no | no |
private | yes | yes | yes | no | yes | no | yes |
protected | yes | yes | yes | no | yes | no | yes |
public | yes | yes | yes | yes | yes | yes | yes |
static | yes | yes | no | no | yes | no | yes |
synchronized | no | yes | no | no | no | no | no |
transient | yes | no | no | no | no | no | no |
volatile | yes | no | no | no | no | no | no |
strictfp | no | yes | no | yes | yes | yes | yes |
class \ have access to | private elements |
default elements (no modifier) |
protected elements |
public elements |
---|---|---|---|---|
own class | yes | yes | yes | yes |
subclass - same package | no | yes | yes | yes |
class - same package | no | yes | yes | yes |
subclass - another package | no | no | inheritance | yes |
class - another package | no | no | no | yes |
Precedenta:
int x = 1;
int y = x++ + x; //3
int x = 1;
int y = x + x++; //2
4 + 20 / (3 - 1) * 2 //24
if (x < 100) && (x > 10) // cu paranteze s-au && nu are ce cauta acolo
true || true && false // true (&& are prioritare inainte la ||)
main()
- main() pate fi un nume de metoda oarecare (in conbinatie cu public static void main (String[] args))
- main() poate fi suprascrisa
Methods
- Methods arguments are always copies
- prima litera mica, camelCase si sa fie Verb + Substantiv (ex.getBallance())
MEMBER ACCESS MODIFIER
4 Acces modifiers: public, protected,default, private (access modifiers NU se aplica niciodata la local variabile - de fapt la local var nu se aplica niciodata un modificator cu o singura exceptie final)
Nonacces modifiers: final, abstract; strictfp(force floating points)
- Methodele si instance variables sant cunoscute ca "members"
- Members pot folosi toate cele patru acces levels: public, protrected, default si private
- Accesul members se face in doua forme:
- Codul dintr-o clasa poate accesa membri altor classe
- O subclass-a poate mosteni membri superclass-ei sale
- Daca o clasa nu poate fi accesata nici membri ei nu pot fi accesati
- Vizibilitatea clasei trebuie clarificata inainte de vizibilitatea membrilor
- public members pot fi accesati de toate classele chiar si din alte pakete
- Daca un membru ale unei superclasse este public, subclassele sale or sa le mosteneasca, indiferent in ce pakete se afla
- Accesarea membrilor fara "dot operator" se poate face numai daca se afla in acceasi classa
- this. se refera mereu la obiectul care ruleaza actual
-
this.oMethoda() este sinonim cu oMethoda()
- private members se pot accesa numai de codul din acceasi clasa
- private members nu sant vizibili in afara de propria classe (asa ca private members nu se pot mosteni)
- private methods are not inherited at all so there is no question of overriding a private method.
- private methods nu pot fi suprascrise
- default si protected members difera numai daca sant implicate subclasele
- default members pot fi accesati numai de clasele din acelasi paket
- protected members pot fi accesati de toate clasele din accelasi paket, PLUS in subclase indiferent de paket ( prin mostenire (extends) DAR NU SI PRIN INSTANTIERE)
- Atentie daca o clasa aflata in acelasi paket cu subclasa instantiaza subclasa, NU are acces la membri protected mosteniti de aceasta subclasa (cu exceptia subclaselor subclaselor)
- protected = package + kids (subclase)
Other Modifiers-Members
- final - Methodele final mu pot fi suprascrise in subclase
- abstract - Methodele abstract sant declarate cu o semnatura, tip de returnare,optional clauze throw, dar nu pot fi implementate (nu contin cod functional
)
se fol. pt a forta o subclassa sa le implementeze (datorit methodei abstracte clasa respectiva devine si ea abstracta )
- Methodele abstract se termina cu ; (nu folosesc acolade {})
- O methoda nu este abstracta daca:
- nu este declarata "abstract"
- are paranteze
- POATE (dar nu trebuie) sa aiba cod intre paranteze
- Prima clasa concreta care extinde o clasa abstracta trebuie sa implementeze toate methodele abstracte ale acelei clase abstracte
- Clasele abstracte nu trebuie sa implementeze methodele abstracte din superclassa abstracta implementata DAR prima clasa concreta trebuie sa implementeze TOATE methodele abstracte din TOATE clasele abstracte mosteite
- abstract - Methodele abstract trebuiesc fi implementate de subclasse, asa ca trebuiesc fi mostenibile, din acest motiv:
- java-kurs methodele abstracte nu pot fi private
- methodele abstracte nu pot fi final
Synchronized Methods
- indica faptul ca acesta metoda poate fi accesata doar de un un singur thread de-o-data
- Modificatorul synchronized se aplica numai la methode si "code blocks"
- Modificatorul synchronized poate folosi oricare controlor de acces si poate fi marcat si final
- native - este un modifier si se aplica numai la methode si se termina cu (); Modificatorul native se poate aplica numai la methode
- implementeaza cod nativ (ex C)
- strictfp - Modificatorul strictfp poate fi aplicat numai pt. classe si methode
Local Variables |
Instantz Variables |
Methods |
final |
final |
final |
public |
public |
|
protected |
protected |
|
private |
private |
|
static |
static |
|
transient |
abstract |
|
volatile |
syncronised |
|
strictfp |
||
native |
||
- Denumirea parametrul unei methode nu poaate fi la fel cu denumirea unei local variabile (method variable)
- Class variable(static) si instanz variable nu pot avea acelasi nume
Math.random()
int zufallszahl = (int)(Math.random() * (max - min) + min); // between min and max.
int zufallszahl = (int)(Math.random() * (5 - 2) + 2); // >= 2, < 5
zufallszahl = Math.random(); // >= 0.0, < 1.0 (float, double)
int zufallszahl = (int)(Math.random() * 40); // (intre 0 si 39) // >= 0, < 40 (exclusiv) sinonim cu
int zufallszahl = (int)(Math.random() * (39 + 1)); // (intre 0 si 39) // >= 0, < 40 sinonim cu ex de sus
int zufallszahl = (int)(Math.random() + 0.5) // 0 OR 1
nested classes este sinonim cu inner classes
Objects
- obiejectele (inkl. instanz variables)
traiesc ins Heap
Overrriding and Overloading
- Methodele pot fi suprascrise si supraincarcate
-
Constructori pot fi numai supraincarcati
- Methodele pt a fi suprascrise trebuie sa indeplineasca urmatoarele conditii:
- trebuie sa aiba acelasi lista de argumente
- acelasi return typ (cu exceptia "covariant typ = unde return typ poate fi o subclasa")
- Nu trebuie sa aiba accesori de modificare mai restrictivi dar mai lejeri da
- Methodele private nu pot fi mostentite
private methods are not inherited at all so there is no question of overriding a private method.
- O subclassa foloseste super.overridenMethodnName() pt. a folosi versiunea mehodei din superclassa
- Methodele pt a putea fi supraincarcate trebuie sa indeplineasca urmatoarele conditii:
- lista de argumente trebuie sa fie diferita
- Poate avea return typ diferit numai daca si lista de argumente este diferita
- Poate avea acces moodifiers diferit
- Poate "throw" exceptii diferite
- Polimorfismul se poate aplica numai la suprascriere nu la supraincarcare
- Object type determina determina ce methoda este folosita la compilare
If there is another method with the same name but with a different number of arguments in a class then that method can be called as overloaded.
Polymorphism
- Tipul reference variabile(nu tipul obiectului) decide ce mehtoda va fi folosita
Return Types
- Methodele supraincarcate isi pot sa isi schimbe return type (Methodele suprascrise nu (cu excepria covariantei)
- Obicects reference return type poate accepta "null" ca return value
- array este un return type legal (si ca declarare si si ca return type)
- Methods care au ca returnun type un object refernz, pot returna un subtype
- Methods care au ca return type o interfata, pot returna "any implementer"
- Comparearea Objekt Refernez Variabilelor se face cu = = , return true numai daca ambele referentz var se refera la acelasi obiect.
- Pt Compararea obiectelor se fol methoda equals()
- Compararea valorilor la Primitive Variables face cu = =
Scope
Scope se refera la "lifetime-ul" unei variabile:
si anume patru basics scopes:
- static variables live atata timp cit traieste clasa sa (Klassen Variable)
- instanz variables exixsta atit cit obiectele sale (Object Variable)
- local variables live atata timp cit methoda este in stack (Methoden Variable)
- block variables (ex for if) live pana la terminarea blocului
Source File Declarations Rules
- O sursa cod poate avea numai one public class
daca codul contine o classa public, numele clasei (fisierului) trebuie sa fie acelasi cu numele classei
- Un fisier poate avea mai multe nonpublic class javakurs
Static Variable si Methods
- Methodele si variabilele statice nu sant legate la nici o instanta particulara a unei classe (independente de obiecte)
- Pt accesarea unui membru static al unei clase, nu este nevoie de instantarea acelei clase
- Exixta numai o singura copie a unei variabile statice si toate instantele impart aceasi copie
- methodele statice nu au acces direct la membri nonstatici
- O metohoda statica nu poate accesa instanz variabile (non statice) direct, pt a fi accesate trebuie folosit .dot operator.
- Membri NonStatici au acces la membri static dar Static nu are acces la nonStatic
- static method cannot be overridden by a non-static method and vice versa
- nu poate folosi this (apartine unui anumit obiect)
- Metodele statice au comportament unic in toate instantele
- static variable au o singura copie a valori in toate instantele
- toti membri statici apartin clasei nu a vreunei instante
- methodele statice nu pot fi suprascrise dar pot fi redefinite
- Static- atributele statice mai sant numite si "class fields" s-au "class methodos" pt ca apartin classei si nu a unei instante.
String and StringBuilder
= = compara Strings reference pe cand methoda equals() compara valuarea in sine
- String este un obiect
- String este imutabila dar string referent variable nu sant
- String are o methoda java-kurs pe nume lengh() -- arrays au un atribut pe nume .length (A-A)
- String, StringBuilder, and StringBuffer - all are final classes.
- String methoden:
length()
concat()
http://www.tutorialspoint.com/java/java_strings.htm
StringBuilder delete(int start, int end)
substring(int beginIndex) // "unhappy".substring(2) returns "happy"
switch
- poate evalua numai: enums, byte, short, int, char si String // NU boolean, long, float and double
- case trebuie sa fie un literal s-au final, ori o expresie constanta inkl enum, String
- default label nu este obligatoriu
Variable Declarations
- Instant variabilile pot
- avea orice controlor de acces
- pot fi marcate ca fiind final s-au transient
- Instant variabilile NU pot fi: abstract, synchronized, native, or strichtfp
- Este legal ca numele unei "local variable" sa fie indentica cu o "instant variable" (aceasta se numeste "shadowing")
- final variables pot avea urmatoarele proprietati:
- final variables nu pot primi alte valori dupace a fost declarata
- final reference variables nu poate sa se refere la un alt obiect dupa ce a fost declarat final
- final variables trebuiesc fi initializate inainte de executarea constructorului
- Nu exixta object final, un object refence marcat ca fiind final NU inseamna ca acel obiect nu poate fi schimbat
Operators | Precedence |
---|---|
postfix | i++ i-- RIGHT |
unary | ++i --i +i -i ~ ! RIGHT |
multiplicative | * / % |
additive | + - |
shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
ternary | ? : RIGHT |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= RIGHT |
public static void main(String[] args) VM
arrays au un atribut pe nume .length (A-A)
substring, indexOf() = IE Inclusiv - Exclusiv (ultimul index fiind exclusiv se afiseaza adaugand un nr la index String s = "0";
System.out.println(s.substring(0, 1));
PI = packet import
Animal doina = new Horse();
Animal --> Compiler Time //
Horse --> Run Time // DR dreapta runTime
- Suprascris = Run Time // OR Overwrite runTime
- Supraincarcat = Compiler Time
The concept is : variables are shadowed and methods are overridden.
^ logical XOR, return true daca exact un operand este TRUE
-2 * -1 = 2 // -1 das inverseaza primitivele
+ * + = +
+ * - = -
- * + = -
- * - = +
Packetul java.lang este importat automat
String, StringBuilder, and StringBuffer - all are final classes.
Math.pow(2, 3); // 8.0 //atentie typ double
int x = 0; int y = x = x + 1; //1
int x = 1; y = (x > 2) ? 10 : -10; //-10
int a = 4 + 20 / 2 * 2; // 24
int x, int y; // Wrong (de doua ori int)
int month = 09; // Wrong (octal fara cifra 8 si 9)
class Beta extends java.util.HashMap{} // este admis
modulo operator is typically used with integer operands, it also works for floating-point values
Octal values is base 8 (adica 0 - 7)
Octal literals are with a leading zero, for example 035 and 02764523 (fara 8 si 9)
ANDROID
Log.e("bezeichner", "Fehlerbeschreibung") // e error, d debug
Activitys sant App screens
Links:
The Java® Language Specification James Gosling
Engineering ToolBox Decimal, binary, octal and hexadecimal numbers
Java ™ and all Java-based trademarks are trademarks of Oracle®, Inc. in the United States
Primavera-Kassensysteme Die Professionelle und Bedienungsfreundliche Registrierkasse