ΣΕΜΙΝΑΡΙΟ JAVA 1 η ιάλεξη
ΕΙΣΑΓΩΓΙΚΑ ΓΙΑ ΤΗ ΟΜΗ ΤΗΣ JAVA Περιβάλλον ανά τυξης Download & Install Περιβάλλον εκτέλεσης Οργάνωση ληροφορίας Στόχος ενός εριβάλλοντος ανά τυξης / builder Α λό ρόγραµµα Έξοδος στην κονσόλα Τύ οι δεδοµένων
ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗΣ DOWNLOAD & INSTALL Το εριβάλλον ανά τυξης είναι το NetBeans 6.5 το ο οίο µ ορούµε να κατεβάσουµε α ό το www.netbeans.org ε ιλέγοντας Download και α ό τη νέα σελίδα στο κάτω µέρος της latest JDK with NetBeans IDE Java SE bundle. Εγκαθιστούµε µε τα defaults.
ΟΜΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ JAVA Bytecode vs Assembly, Java Virtual Machine, Operating System JVM Υ έρ Φορητότητα Αναβαθµισιµότητα JVM Α οµόνωση ιαχείριση µνήµης / Garbage Collection Κατά Μειωµένη α όδοση Μειωµέν ρόσβαση στον Η/Υ Native / Τυ ική εφαρµογή (.exe) (assembly) Εφαρµογή Java (.jar) (Bytecode) JVM OS Λειτουργικό Σύστηµα H/W Ηλεκτρονικός Υ ολογιστής
ΙΑ ΙΚΑΣΙΑ ΗΜΙΟΥΡΓΙΑΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ JAVA Συγγραφή IDE Text editor (notepad, vi) Building ( ιανοµή/εγκατάσταση) IDE javac Εκτέλεση IDE java Source Code (.java) Bytecode (.class) Source Code (.java) Bytecode (.class) Binary αρχείο (.jar) JVM για εκτέλεση
ΣΤΟΧΟΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ IDE & BUILDER 1/2 Περιγραφή IDE Menu / Toolbars Αριστερή στήλη : Projects / Files & Navigator Χώρος δεξιά : Editor (µε tabs) & Search/Output/Tasks ηµιουργία ενός project Α λό application Συγγραφή κώδικα [α λό Hello world αράδειγµα Παράλληλη αρουσίαση λειτουργιών του editor] System.out.println µήνυµατα Σχόλια : Βάζω την το ένα "sout" σε σχόλιο. Τι αλλάζει;
ΣΤΟΧΟΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ IDE & BUILDER 2/2 Build ( Συντακτικό κοµµάτι / σύνδεση µε βιβλιοθήκες) Εκτέλεση του ρογράµµατος Μέσα α ό το IDE Α ό εριβάλλον DOS Περιγραφή Class Main Κλήση συστήµατος (println) Import Namespaces
ΤΥΠΟΙ Ε ΟΜΕΝΩΝ 1/ Value ή Primitive τύ οι δεδοµένων Primitive boolean : Μόνο τιµές true ή false byte : ροσηmασµένος ακέραιος 8bit char : Ανα αράσταση 2byte Unicode short : ροσηmασµένος ακέραιος 16bit int : ροσηmασµένος ακέραιος 32bit long : ροσηmασµένος ακέραιος 64bit float : κλασµατικός α λής ακρίβειας double : κλασµατικός δι λής ακρίβειας Reference Αναφορά σε Object Όλα τα µη primitive
ΤΥΠΟΙ Ε ΟΜΕΝΩΝ 2/ Αναφέρεται σε αντικείµενο (instance στιγµιότυ ο) Τα αντικείµενα δηµιουργούνται µε «ειδικό» τρό ο ενώ «καταστρέφονται» αυτόµατα Reference ισοδύναµα των value τύ ων: ανα αριστούν τους βασικούς (primitive) τύ ους ( εριέχουν βοηθητικές συναρτήσεις και ληροφορίες) Μεταβλητή Reference Αντικείµενο (instance)
ΤΥΠΟΙ Ε ΟΜΕΝΩΝ 3/ Obj a = new Obj('X'); Reference Μεταβλητή a Μεταβλητή b Μεταβλητή c Obj b = a; Obj c = b; b = new Obj('Y ); a = null; c = b; Αντικείµενο X (instance)
ΜΕΤΑΒΛΗΤΕΣ & ΠΡΑΞΕΙΣ Μεταβλητές Ονοµασία Τύ ος δεδοµένων ήλωση : τύ ος / όνοµα / τιµή Εκχώρηση τιµής Αρχικο οίηση SOS Πράξεις Βασικές Προτεραιότητα ράξεων/τελεστών Μοναδιαίοι Πολλα λασιαστικοί Προσθατικοί Συγκρίσεις Λογική σύζευξη / διάζευξη Ανάθεση Παρενθέσεις Μόνο αρενθέσεις Προτεραιότητα Τελστών Postfix / Επιθεµατικοί. [] (args) post ++ -- Unary / Μοναδιαίοι Prefix / Προθεµατικοί Τύπος δεδοµένων (cast) Multiplicative Πολλαπλασιαστικοί! ~ unary + - pre ++ -- (type) new * / % Additive / Προσθετικοί + - Shift / Ολίσθησης << >> >>> Relational Συσχέτισης < <= > >= instanceof Equality / Ισότητας ==!= Bitwise AND Bitwise exclusive OR (XOR) Bitwise inclusive OR Logical / Λογικό AND & ^ && Logical / Λογικό OR Ternary / Τριαδικός?: Assignment = += -= etc
ΠΙΝΑΚΕΣ Αγκύλες Χρησιµο οιούνται α οκλειστικά για ίνακες Μέγεθος Ορίζεται, όχι µόνο στη δήλωση ήλωση Τύ ος δεδοµένων Όνοµα Προαιρετικά διάσταση Αναφορά σε στοιχείο Α ό 0 ως Μήκος -1 Αντικείµενο Μήκος ίνακα Κλάσση Arrays ιαγραφή Μέσω ανάθεσης µε null Περισσότερες διαστάσεις int[] pinakas1 = new int[10]; int pinakas2[]; pinakas2 = new int[100]; pinakas1[5] = pinakas2[12]; pinakas1[8]++; int L = pinakas1.length; Arrays.sort(pinakas2); pinakas1 = null;
ΚΕΙΜΕΝΟ STRING & CHARACTER Το κείµενο στη Java αριστάνεται σαν αντικείµενο κλάσης String Α οτελείται α ό χαρακτήρες (κλάση Character) Ε ίσης γράφονται ως κείµενο µέσα σε δι λά εισαγωγικά και αντιστοιχούν σε αντικείµενο String Ειδικοί χαρακτήρες µέσα στα δι λά εισαγωγικά, ξεκινάνε άντα µε \ και : n για αλλαγή γραµµής \ για το ίδιο το \ t για τον tab (στηλοθέτης) r για ε ιστροφή στην αρχή της γραµµής Ένας χαρακτήρας σε µονά εισαγωγικά αντιστοιχεί σε αντικείµενο Character. Ειδική συµ εριφορά τελεστών όταν εµ λέκεται String: Το + ενώνει το String µε άλλο String ή αν δεν είναι String το άλλο εµ λεκόµενο στοιχείο, ροσ αθεί να το µετατρέψει Το == ελέγχει τα αντικείµενα αν ταυτίζονται και όχι το εριεχόµενο String, άρα µ ορεί δύο αντικείµενα να έχουν το ίδιο κείµενο και το == να δώσει ψευδές στη σύγκριση! Το σωστό είναι το astring.equals(anotherstring)
ΠΑΡΑ ΕΙΓΜΑΤΑ STRING Η εκτέλεση της παρακάτω µεθόδου: ίνει το ακόλουθο αποτέλεσµα: public static void stringtest() { int[] x = new int[] {1,3,5,7,9,2,4,6,8,0; System.out.println("a" + "b"); System.out.println("1" + 2); System.out.println(1 + "2"); System.out.println(1 + 2 + "3"); System.out.println("1" + 2 + 3); System.out.println("A! " + (1+1==2)); System.out.println("" + x); System.out.println(x.toString()); System.out.println(Arrays.toString(x)); ab 12 12 33 123 A! true [I@42e816 [I@42e816 [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ 1/ if ή if / elseήif / else if / / else if / else Κάθε if ελέγχει µια συνθήκη η ο οία είναι υ οχρεωτικά µέσα σε αρενθέσεις Για το if ου ε αληθεύεται εκτελούνται οι αντίστοιχες εντολές Το else είναι ροεραιτικό, αλλά το ολύ ένα Το if είναι υ οχρεωτικό και µόνο ένα Τα else if είναι ροαιρετικά και α εριόριστα Η σειρά των συνθηκών ου εξετάζοναι είναι άντα α ό τη ειδική στην γενική Πάντα µε { αν και για 1 εντολή δεν α αιτούνται
ΠΑΡΑ ΕΙΓΜΑΤΑ IF 1/ //====================== Ex. #1 if (x < 0) { println("can't calc root! ); else { println("root is : " + Math.sqrt(x) ); //====================== Ex. #2 if (year % 400 == 0) { // ίσεκτο else if (year % 100 == 0) { // Μη δίσεκτο else if (year % 4 == 0) { // ίσεκτο else { // Μη δίσεκτο //====================== Ex. #3 if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) { // ίσεκτο else { else { else { // Μη δίσεκτο // ίσεκτο // Μη δίσεκτο
ΠΑΡΑ ΕΙΓΜΑΤΑ IF 2/ //====================== Ex. #4 if (kilos > 0) { // Do something else if (kilos == 0) { // Do Something more else { // Oops! This couldn t happen! // IT S A BUG!! //====================== Ex. #5 if (x == 0) { // Do this it s ok! // But it s a little bit // Looooong // Too many lines // So you see it s not that easy // to tell where it ends return; //====================== Ex. #6 if (x!= 0) return; // The same long // series of commands // but now you don t care // where the if ends // It works the other way around // You negate the condition to // end the execution, instead // of executing when all the // conditions are met! return;
ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ 2/ while Σύνταξη ίδια µε το α λό if όµως οι εντολές του σώµατος ε αναλαµβάνονται εφόσον εξακολοθεί και ισχύει η συνθήκη. Εάν αρχικά η συνθήκη δεν ισχύει, τότε δεν εκτελείται καθόλου το σώµα. Προσοχή ώστε η συνθήκη κά οια στιγµή να µην ε αληθεύεται αλλιώς το σώµα θα εκτελείται συνεχώς. do / while Ίδιο µε το while, εκτελείται όµως ρώτα το σώµα του βρόχου και µετά ελέγχεται η συνθήκη. Γίνεται άντα τουλάχιστον µία ε ανάληψη.
ΠΑΡΑ ΕΙΓΜΑΤΑ WHILE //======================== Ex. #1 while (x > 1) { x = x / 2; //======================== Ex. #2 while (x > 1) { x *= 2; // Λάθος! Το x αυξάνει!! // Ατέρµονας βρόχος //======================== Ex. #4 do { a++; b = testone(a); c = b + testtwo(a, x); while (x!= 0) ; // Πρόβληµα, γιατί το x δεν αλλάζει // µέσα στο σώµα του βρόχου, άρα // Αν ισχύει η συνθήκη έστω και µία // φορά, τότε ο βρόχος θα εκτελείται // «για πάντα» //======================== Ex. #3 while (0 < 1) { // Ατέρµονας βρόχος // Εκτελείται «για πάντα» //======================== Ex. #5 while ((x = R.nextInt()) > 50) { // Ειδική γραφή, εκτελείται η // εκχώριση στο x και µετά // γίνεται ο έλεγχος // Do something
ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ 3/ Α λό for 1 2 3 for (int i = 0; i < 5; i++) { 4 System.out.println("Iteration / Επανάληψη #" + i); Αντιστοίχιση του σχήµατος 1 : Α όδοση αρχικών τιµών 2 : Έλεγχος ου ρέ ει να ισχύει 3 : Μεταβολή σε κάθε βήµα της ε ανάληψης 4 : «Σώµα» του βρόχου Η σειρά εκτέλεσης είναι: Μια φορά στην αρχή 1, 2 Εφόσον ισχύει το 2, τότε εκτελούνται 4, 3, 2 και ε αναλαµβάνεται µόνο αυτό το βήµα
ΠΑΡΑ ΕΙΓΜΑΤΑ FOR //======================== Ex. #1 for (int i=1; i<n; i++) { println("hello! ); //======================== Ex. #2 for (int i=1; i<n; i++) { println(" ("i = " + i); //======================== Ex. #3 for (int i=1; i<pinak.length; i++) { println(" ("pinak[" + i + "] = " + pinak[i]); //======================== Ex. #4 for (int i=1; i<n; i++) { if (i % 5) continue; println(" ("i = " + i); //======================== Ex. #5 for (int i=1; i<n; i++) { x = f(i); if (x < 12) break; y = g(x);
Η ΛΕΙΤΟΥΡΓΙΑ ΤΩΝ ΑΓΚΙΣΡΩΝ { (BRACES Ή CURLY BRACKETS) Οµαδο οιούν τις εντολές ου εριέχονται ανάµεσα τους σαν µία. Σε αυτή την ερί τωση: Οι µεταβλητές ου ορίζονται µέσα στα άγκιστρα σταµατούν να «υ άρχουν» έξω α ό αυτά Οµαδο οιούν εντολές για χρήση µε τα if-elseif-else, while, for, κλ Οριοθετούν: Κλάσεις Μεθόδους Αρχικο οιούν ίνακες int[ ] a = new int [ ] { 1, 2, 3, 4, 5, 8, 8, 8 ;
ΛΕΞΙΛΟΓΙΟ Αγγλικά Ελληνικά Ε εξήγηση invoke reference primitive (data) type καλώ µέθοδο ή συνάρτηση αναφορά ρωτογεννής τύ ος (δεδοµένων) declaration δήλωση ήλωση µεθόδου, δηλαδή καθορίζονται οι αράµετροι και το α οτέλεσµα µιας συνάρτησης, δεν υ άρχει κώδικας definition ορισµός Ό ως η δήλωση αλλά εριλαµβάνεται και ο κώδικας operator τελεστής Το σύµβολο της ράξης. Μοναδιαίος, δυαδικός, τριαδικός. initialization αρχικο οίηση Α όδοση αρχικής τιµής σε µεταβλητές method µέθοδος Υ ορουτίνα ή συνάρτηση ου σχετίζεται µε (ανήκει σε) ένα αντικείµενο