Java
Η Java είναι αντικειμενοστραφής γλώσσα προγραμματισμού, που σχεδιάστηκε από την εταιρεία πληροφορικής Sun Microsystems.
Κώδικας
Όταν λοιπόν κάποιος γράφει κώδικα σε Java, πρώτα μετατρέπεται σε bytecode, μια αναπαράσταση δηλαδή του κώδικά σε χαμηλό επίπεδο, ανεξαρτήτως της πλατφόρμας και έπειτα το bytecode ερμηνεύεται από την Java Virtual Machine (JVM). Η εικονική μηχανή της Java (JVM) αποτελεί ένα στοιχείο λογισμικού που εκτελείται στην πλατφόρμα προορισμού. Αρχικά, “διαβάζει” τις οδηγίες bytecode και στη συνέχεια τις εκτελεί.
Java “Hello, World!” Program
// Your First Program
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Bιβλιοθήκες
| Βιβλιοθήκη | Περιγραφή |
|---|---|
| java.lang | Βασικές κλάσεις και αντικείμενα που παρέχονται από την Java. |
| java.util | Βιβλιοθήκη που περιλαμβάνει δομές δεδομένων (όπως λίστες, στοίβες, ουρές), αλγόριθμους και εργαλεία για είσοδο/έξοδο δεδομένων. |
| java.io | Βιβλιοθήκη για τη διαχείριση των εργασιών εισόδου/εξόδου στο σύστημα αρχείων. |
| java.net | Βιβλιοθήκη για την ανάπτυξη εφαρμογών δικτύου, περιλαμβάνοντας τη δυνατότητα επικοινωνίας με διάφορους δικτυακούς πόρους. |
| java.sql | Βιβλιοθήκη για την αλληλεπίδραση με σχεσιακές βάσεις δεδομένων μέσω γλώσσας SQL. |
| java.awt | Βιβλιοθήκη για τη δημιουργία γραφικών διεπαφών χρήστη (GUI) στην Java. |
| javax.swing | Επέκταση της βιβλιοθήκης AWT που παρέχει περισσότερα εργαλεία και στοιχεία για την ανάπτυξη GUI εφαρμογών. |
| java.math | Βιβλιοθήκη για την εκτέλεση ακριβών υπολογισμών μεγάλων αριθμητικών τιμών. |
| java.time | Βιβλιοθήκη για τη διαχείριση ημερομηνιών, χρόνων και διαστημάτων. |
| java.security | Βιβλιοθήκη που παρέχει εργαλεία για την ασφάλεια της Java εφαρμογών. |
Δήλωση και αρχικοποίηση μεταβλητών
public class VariableExample {
public static void main(String[] args) {
int integerVariable = 10; // Ακέραιος
double doubleVariable = 3.14; / Πραγματικός
char charVariable = 'A'; // Χαρακτήρας
boolean booleanVariable = true; // Λογικός
String stringVariable = "Hello, World!"; // Κείμενο (συμβολοσειρά)
System.out.println("Ακέραια μεταβλητή: " + integerVariable);
System.out.println("Πραγματική μεταβλητή: " + doubleVariable);
System.out.println("Χαρακτήρας: " + charVariable);
System.out.println("Boolean μεταβλητή: " + booleanVariable);
System.out.println("Κείμενο: " + stringVariable);
}
}Είσοδος (Input) & Έξοδος (Output)
Εντολή εκτύπωσης
System.out.print("Κείμενο προς εκτύπωση");Εντολή εκτύπωσης με αλλαγή γραμμής
System.out.println("Κείμενο προς εκτύπωση");Εισαγωγή δεδομένων από τον χρήστη
Η Scanner ανήκει στο πακέτο java.util και χρησιμοποιείται για να λαμβάνει είσοδο από διάφορες πηγές, όπως το πληκτρολόγιο, αρχεία, ή συμβολοσειρές.
new Scanner(System.in): Δημιουργεί ένα νέο αντικείμενο Scanner που διαβάζει δεδομένα από την τυπική είσοδο, δηλαδή το πληκτρολόγιο. Το System.in είναι το stream για την είσοδο δεδομένων από τον χρήστη.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Εισαγάγετε έναν ακέραιο αριθμό: ");
int integerInput = scanner.nextInt();
System.out.println("Εισαγόμενος ακέραιος: " + integerInput);
System.out.print("Εισαγάγετε έναν πραγματικό αριθμό: ");
double doubleInput = scanner.nextDouble();
System.out.println("Εισαγόμενος πραγματικός: " + doubleInput);
scanner.nextLine(); // Καθαρίζει το buffer μετά την nextDouble
System.out.print("Εισαγάγετε ένα κείμενο: ");
String stringInput = scanner.nextLine();
System.out.println("Εισαγόμενο κείμενο: " + stringInput);
scanner.close(); // Κλείνει το Scanner όταν δεν χρειάζεται πλέον
}
}Δομές ελέγχου
int time = 22;
if (time < 10) {
System.out.println("Good morning.");
} else if (time < 18) {
System.out.println("Good day.");
} else {
System.out.println("Good evening.");
}Λογικοί Τελεστές: Μπορείς να συνδυάσεις πολλαπλές συνθήκες με τους λογικούς τελεστές:
- &&: Αληθές μόνο αν όλες οι συνθήκες είναι αληθείς.
- ||: Αληθές αν τουλάχιστον μία συνθήκη είναι αληθής.
- !: Αντιστρέφει την αλήθεια της συνθήκης.
Επανάληψη
Η δομή επανάληψης (ή βρόχος, loop στα Αγγλικά) είναι ένας τρόπος να εκτελούνται οι ίδιες εντολές πολλές φορές μέχρι να ικανοποιηθεί μια συγκεκριμένη συνθήκη. Αυτές οι δομές χρησιμοποιούνται για να επαναλάβουν ένα σύνολο εντολών χωρίς να χρειάζεται να τις γράφουμε πολλές φορές.
for: Χρησιμοποιείται για επανάληψη σε μια ακολουθία (λίστες, συμβολοσειρές, range κ.λπ.).
for (int i = 0; i < 5; i++) {
System.out.println(i);
}while: Επαναλαμβάνει τον κώδικα όσο μια συνθήκη είναι αληθής.
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}do/while:Αυτός ο βρόχος θα εκτελεί πρώτα τον κωδικά και μετά θα ελέγχει αν η συνθήκη είναι αληθής. Την πρώτη φορά θα εκτελεστεί ο βρόχος ακόμα και αν η συνθήκη είναι ψευδής.
int i = 0;
do {
System.out.println(i);
i++;
}
while (i < 5)Arrays
String[] names;Για να εισαγάγετε τιμές σε αυτό, μπορείτε να τοποθετήσετε τις τιμές σε μια λίστα διαχωρισμένη με κόμμα, μέσα σε άγκιστρα.
String[] names = {"Dimitris", "Ioanna", "Giannis", "Stathis"};Πρόσβαση στα Στοιχεία
String[] names = {"Dimitris", "Ioanna", "Giannis", "Stathis"};
System.out.println(names[0]);Αλλαγή στοιχείων
names[0] = "Thomas";Μήκος
String[] names = {"Thomas", "Ioanna", "Giannis", "Stathis"};
System.out.println(names.length);Class
Ορισμός της κλάσης
public class ClassName {
// Class body
}Μεταβλητές
private String name; // private μεταβλητή
public int age; // public μεταβλητήΚατασκευαστής (Constructor)
public ClassName(parameters) {
// Constructor bodyΜέθοδοι
public ReturnType methodName(parameters) {
// Method bodyΔημιουργία αντικειμένου της κλάσης
ClassName objectName = new ClassName(parameters);Java Interface
| Interface | Περιγραφή |
|---|---|
| Runnable | Ορίζει μια εργασία που μπορεί να εκτελείται από ένα νήμα (thread). Η μέθοδος run() περιγράφει τη λογική της εργασίας. |
| Callable | Παρόμοιο με το Runnable, αλλά η μέθοδος call() επιστρέφει ένα αποτέλεσμα και μπορεί να ρίξει εξαιρέσεις. |
| Comparable | Ορίζει τη μέθοδο compareTo(T o) που συγκρίνει το τρέχον αντικείμενο με το αντικείμενο τύπου T και επιστρέφει έναν αριθμό. |
| Iterable | Ορίζει τη μέθοδο iterator() που επιστρέφει έναν Iterator για την επανάληψη στοιχείων του τύπου T. |
| Collection | Επεκτείνει το Iterable και παρέχει μεθόδους για τη διαχείριση συλλογών αντικειμένων, όπως add(), remove() και size(). |
| List | Επεκτείνει το Collection και παρέχει μεθόδους για την εργασία με στοιχεία σε μια σειριακή διάταξη, όπως get() και set(). |
| Set | Επεκτείνει το Collection και αντιπροσωπεύει μια συλλογή χωρίς επαναλαμβανόμενα στοιχεία. |
| Map | Εκπροσωπεί μια συλλογή ζευγών κλειδιού-τιμής. Παρέχει μεθόδους όπως put(), get() και remove() για την εργασία με ζεύγη κλειδιού-τιμής. |
| SortedMap | Επεκτείνει το Map και διασφαλίζει ότι τα κλειδιά είναι ταξινομημένα σε φυσική σειρά ή μέσω ενός συγκριτή. |
| TreeMap | Μια υλοποίηση του SortedMap που διατηρεί τα κλειδιά σε φυσική σειρά. |
| Comparator | Ορίζει τη μέθοδο compare(T o1, T o2) που συγκρίνει δύο αντικείμενα του τύπου T και επιστρέφει έναν αριθμό για την ταξινόμηση. |
| Serializable | Δηλώνει ότι μια κλάση μπορεί να σειριοποιηθεί, δηλαδή να μετατραπεί σε ροή bytes για αποθήκευση ή μεταφορά. |
| Cloneable | Δηλώνει ότι ένα αντικείμενο μπορεί να κλωνοποιηθεί, δηλαδή να δημιουργηθεί ένα νέο αντικείμενο με την ίδια κατάσταση. |
| AutoCloseable | Ορίζει τη μέθοδο close() που καλείται για την αυτόματη απελευθέρωση πόρων, χρησιμοποιούμενη συχνά με το try-with-resources. |
| Observer | Επιτρέπει την παρακολούθηση (ή παρατήρηση) ενός αντικειμένου και ενημερώνει τους παρατηρητές του όταν το αντικείμενο αλλάζει. |
| EventListener | Ορίζει μεθόδους για τη διαχείριση γεγονότων, χρησιμοποιούμενος σε εφαρμογές GUI και άλλες περιπτώσεις που σχετίζονται με γεγονότα. |
| Iterator | Παρέχει μηχανισμό για την επανάληψη μέσω μιας συλλογής χωρίς να εκτίθεται η εσωτερική αναπαράσταση της συλλογής. |
| ListIterator | Επεκτείνει το Iterator και επιτρέπει αμφίδρομη επανάληψη μέσω μιας λίστας, καθώς και τροποποίηση των στοιχείων κατά την επανάληψη. |
| Deque | Επεκτείνει το Queue και αντιπροσωπεύει μια διπλή ουρά, επιτρέποντας την εισαγωγή και αφαίρεση στοιχείων από και τις δύο άκρες. |
| Queue | Αντιπροσωπεύει μια ουρά δεδομένων, επιτρέποντας την προσθήκη στοιχείων στο τέλος και την αφαίρεση στοιχείων από την αρχή. |
| Function | Αναπαριστά μια συνάρτηση που δέχεται ένα όρισμα τύπου T και επιστρέφει ένα αποτέλεσμα τύπου R. |
| Predicate | Αναπαριστά μια συνάρτηση που δέχεται ένα όρισμα τύπου T και επιστρέφει boolean, συνήθως για συνθήκες ή φίλτρα. |
| Supplier | Αναπαριστά μια συνάρτηση που δεν δέχεται όρισμα και επιστρέφει ένα αποτέλεσμα τύπου T. |
| UnaryOperator | Επεκτείνει το Function και αναπαριστά μια συνάρτηση που δέχεται και επιστρέφει το ίδιο τύπο δεδομένων T. |
| BinaryOperator | Επεκτείνει το BiFunction και αναπαριστά μια συνάρτηση που δέχεται δύο παραμέτρους του τύπου T και επιστρέφει ένα αποτέλεσμα του τύπου T. |
| BiFunction | Αναπαριστά μια συνάρτηση που δέχεται δύο παραμέτρους τύπου T και U και επιστρέφει ένα αποτέλεσμα τύπου R. |
| CharSequence | Αναπαριστά μια ακολουθία χαρακτήρων, παρέχοντας μεθόδους για την εργασία με κείμενο όπως length(), charAt() και subSequence(). |
Java Extends
class MyClass extends Object {
// Αυτή η κλάση κληρονομεί από την Object, αλλά δεν χρειάζεται να το δηλώσει ρητά.
}| Extends | Βιβλιοθήκη | Περιγραφή |
|---|---|---|
| Object | java.lang | Η ρίζα όλων των κλάσεων στην Java. Κάθε κλάση κληρονομεί έμμεσα από αυτήν. |
| AbstractList | java.util | Παρέχει μερική υλοποίηση της διεπαφής List. |
| InputStream | java.io | Παρέχει μια βασική υλοποίηση για την ανάγνωση δεδομένων από ροές. |
| AbstractMap | java.util | Παρέχει μερική υλοποίηση της διεπαφής Map. |
| AbstractSet | java.util | Παρέχει μερική υλοποίηση της διεπαφής Set. |
| SortedSet | java.util | Επεκτείνει το Set, παρέχοντας επιπλέον μεθόδους για ταξινομημένα σύνολα. |
| SortedMap | java.util | Επεκτείνει το Map, παρέχοντας επιπλέον μεθόδους για ταξινομημένους χάρτες. |
| Component | java.awt | Η βασική κλάση για όλα τα οπτικά στοιχεία (components) στο Swing/AWT. |
| ActionListener | java.awt.event | Χρησιμοποιείται για να διαχειριστεί δράσεις (actions) που προκύπτουν από χρήστη. |
| List | java.util | Επεκτείνει την Collection, παρέχοντας μεθόδους για χειρισμό στοιχείων με σειρά. |
| Map | java.util | Εκπροσωπεί μια συλλογή ζευγών κλειδιού-τιμής, παρέχοντας μεθόδ |
| AbstractCollection | java.util | Παρέχει μερική υλοποίηση της διεπαφής Collection, προσφέροντας βασικές λειτουργίες συλλογής. |
| AbstractQueue | java.util | Παρέχει μερική υλοποίηση της διεπαφής Queue, προσφέροντας βασικές λειτουργίες ουράς. |
| Thread | java.lang | Παρέχει τη βάση για τη δημιουργία και εκτέλεση νημάτων (threads) στην Java. Κλάσεις όπως Runnable μπορούν να επεκταθούν από το Thread. |
| Exception | java.lang | Η βασική κλάση από την οποία επεκτείνονται όλες οι εξαιρέσεις στην Java. |
| RuntimeException | java.lang | Κλάση που επεκτείνει την Exception, χρησιμοποιούμενη για εξαίρεση κατά τη διάρκεια εκτέλεσης της εφαρμογής. |
| FileFilter | java.io | Διεπαφή που επεκτείνει την java.util.function.Predicate και χρησιμοποιείται για φιλτράρισμα αρχείων. |
| ListAdapter | android.widget | Παρέχει μια μερική υλοποίηση της διεπαφής List στο πλαίσιο των βιβλιοθηκών Android. |
| Dialog | javax.swing | Κλάση που επεκτείνει την Window και χρησιμοποιείται για τη δημιουργία διαλόγων σε εφαρμογές Swing. |
| JPanel | javax.swing | Κλάση που επεκτείνει την Container και χρησιμοποιείται για τη δημιουργία και διάταξη στοιχείων UI σε εφαρμογές Swing. |
| AbstractButton | javax.swing | Παρέχει μερική υλοποίηση της διεπαφής ButtonModel και χρησιμοποιείται για την υλοποίηση κουμπιών σε εφαρμογές Swing. |
| AbstractAction | javax.swing | Παρέχει μερική υλοποίηση της διεπαφής Action, χρησιμοποιούμενη για την υλοποίηση ενεργειών σε εφαρμογές Swing. |