1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Σχετικά έγγραφα
Βασικά Στοιχεία της Java

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Βασικά Στοιχεία της Java

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Αντικειµενοστρεφής Προγραµµατισµός

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Wrapper Classes, Abstract Classes and Interfaces

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

Δεδομένα, τελεστές, είσοδος/έξοδος

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στον Προγραμματισμό

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Wrapper Classes Τοποθέτηση Δεδομένων Κλήση Μεθόδων. Παναγιώτης Σφέτσος, PhD

! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Mεταβλητές (variables) και Σταθερές (constants)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

Εισαγωγή στον Προγραμματισμό

Κλάσεις και Αντικείµενα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Τύποι δεδομένων, τελεστές, μεταβλητές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

Στοιχειώδεις Δομές Δεδομένων

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Ανάπτυξη και Σχεδίαση Λογισμικού

Κλάσεις και αντικείμενα #include <iostream.h<

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με τη Java

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Προγραμματισμός Ι (ΗΥ120)

Δεδομένα, Τύποι και Τιμές

Δοµές Δεδοµένων. 3η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες. Ε. Μαρκάκης

3. Εκφράσεις και έλεγχος ροής

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

3 Αλληλεπίδραση Αντικειμένων

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Δομημένος Προγραμματισμός (ΤΛ1006)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Συλλογές, Στοίβες και Ουρές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ

Στοιχειώδης προγραμματισμός σε C++

Transcript:

1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της µεταγλώττισης. Οι τύποι στη Java χωρίζονται σε δύο κατηγορίες: τους πρωταρχικούς τύπους (primitive types) και τους τύπους αναφοράς (reference types) Πρωταρχικοί Τύποι Οι πρωταρχικοί τύποι ονοµάζονται και βασικοί και χωρίζονται στους αριθµητικούς τύπους (numeric types) και στον λογικό τύπο boolean. Οι αριθµητικοί τύποι χωρίζονται µε τη σειρά τους στους τύπους περιοχής ή διαστήµατος (integral types) και στους τύπους κινητής υποδιαστολής (floating-point types). Η ιεραρχία των βασικών τύπων φαίνεται παρακάτω: Πρωταρχικοί τύποι Αριθµητικοί τύποι Τύποι διαστήµατος byte short int long char Τύποι υποδιαστολής float double Λογικός τύπος boolean 3

Όλοι οι βασικοί τύποι δεδοµένων παρέχονται αυτόµατα από τον µεταγλωττιστή της Java και από πλευράς µεγέθους και εύρους τιµών είναι ίδιοι σε όλες της υλοποιήσεις της. Στον πίνακα που ακολουθεί φαίνονται το µέγεθος (σε bits) και το εύρος των τιµών του κάθε βασικού τύπου της Java. Τύπος Mέγεθος Ελάχιστη τιµή Μέγιστη τιµή wrapper τύπος char 16 bits Unicode 0 Unicode 2 16-1 Character byte 8 bits -128 +127 Byte short 16 bits -2 15 +2 15-1 Short int 32 bits -2 31 +2 31-1 Integer long 64 bits -2 63 +2 63-1 Long float 32 bits 1.402E-45 (*) 3.402E+38 (*) Float double 64 bits 4.94E-324 (*) 1.79E+308 (*) Double boolean void Boolean Void (*) τυποποίηση IEEE 754 Τύποι Αναφοράς Οι τύποι αναφοράς που ορίζονται στη Java ανήκουν σε τρεις κατηγορίες: τους τύπους κλάσης (class types) τους τύπους πίνακα (array types) και τους τύπους διασύνδεσης (interface types) Η κλάση αποτελεί το βασικό µηχανισµό παραγωγής νέων τύπων δεδοµένων από το χρήστη. Ο τύπος πίνακα ορίζεται µε τη βοήθεια ενός ειδικού µηχανισµού (βλέπε επόµενο κεφάλαιο) που ορίζεται από τη γλώσσα. Ο τύπος διασύνδεσης αποτελεί ένα µηχανισµό ορισµού αφηρηµένων τύπων δεδοµένων (abstract data types). Παραδείγµατα τύπων διασύνδεσης δίνονται στο κεφάλαιο 3. Στα πλαίσια της κλάσης που ορίζει έναν τύπο περιλαµβάνονται: 4

(α) ένα σύνολο δηλώσεων τύπων (βασικών ή/και αναφοράς). Οι τύποι αυτοί ονοµάζονται µέλη δεδοµένων (data members) της κλάσης και ορίζουν την εσωτερική αναπαράσταση του τύπου. Οι δηλώσεις αυτές πρέπει να είναι ιδιωτικές (private) γιατί η αναπαράσταση του τύπου δεν πρέπει να γίνεται γνωστή εκτός της κλάσης. (β) ένα σύνολο από µεθόδους οι οποίες ορίζουν το σύνολο των πράξεων ή λειτουργιών του τύπου. Στις µεθόδους αυτές συµπεριλαµβάνονται και οι αντίστοιχοι δοµητές (constructors) της κλάσης. Οι µέθοδοι που αντιστοιχούν στις πράξεις του τύπου πρέπει να είναι δηµόσιες (public) γιατί αποτελούν την διασύνδεση χρήσης του τύπου. Στο τµήµα κώδικα 1 ορίζεται ο τύπος δεδοµένων παραλληλόγραµµο. Τα µέλη δεδοµένων του τύπου στην περίπτωση αυτή είναι δύο ακέραιοι height και width που ορίζουν την εσωτερική αναπαράσταση του παραλληλόγραµµου. Οι πράξεις που ορίζονται για το παραλληλόγραµµο είναι τέσσερις: υπολογισµός του ύψους (µέθοδος getheigth) υπολογισµός του πλάτους (µέθοδος getwidth) υπολογισµός εµβαδού (µέθοδος calculatearea) έλεγχος εάν πρόκειται για µεγάλο παραλληλόγραµµο (µέθοδος isbig) Η κλάση Rectangle λειτουργεί σαν µία γεννήτρια αντικειµένων που αποτελούν στιγµιότυπα του τύπου. Για τη δηµιουργία των στιγµιότυπων αυτών φροντίζουν οι δύο δοµητές της κλάσης. Ο ένας από αυτούς αναφέρεται στη δηµιουργία ενός τυχαίου παραλληλόγραµµου και ο δεύτερος στην περίπτωση του τετραγώνου. Αξίζει να παρατηρήσουµε ότι το ύψος και το πλάτος κάθε παραλληλόγραµµου δεν γίνεται γνωστό κατ ευθείαν µέσω των µεταβλητών heigth και width του κάθε στιγµιότυπου, αλλά µόνο µέσω της επίκλησης των αντίστοιχων µεθόδων getheigth και getwidth που αντιστοιχούν στις πράξεις του τύπου και πρέπει να σταλούν σαν µηνύµατα προς τα αντικείµενα. Η δηµιουργία 4 διαφορετικών αντικειµένων τύπου Rectangle καθώς και η χρήση των αντίστοιχων πράξεων του τύπου φαίνονται στο τµήµα κώδικα 2 5

public class Rectangle // Ορισµός του τύπου Rectangle { private int height, width; public Rectangle (int h, int w) { height = h; width = w; public Rectangle (int s) { height = width = s; public int getheigth( ) { return heigth; public int getwidth( ) { return width; public int calculatearea ( ) { return height * width; private int perimeter ( ) { return height * 2 + width * 2; public boolean isbig ( ) { return perimeter( ) > 100; Τµήµα Κώδικα 1 6

public static void main(string[ ] args) throws IOException { int x,y; Rectangle square1 = new Rectangle (4); Rectangle square2 = new Rectangle (8); x = 9; y = 9; Rectangle box1 = new Rectangle (x,y); Rectangle box2 = new Rectangle (3,5); System.out.println("AreaA="+square1.calculateArea( )); System.out.println("AreaB="+square2.calculateArea( )); System.out.println("AreaC="+box1.calculateArea( )); System.out.println("AreaD="+box2.calculateArea( )); Τµήµα Κώδικα 2 Μετάπτωση Τύπου (Type Casting) Σε µερικές περιπτώσεις είναι αναγκαία η µετατροπή του τύπου µιας µεταβλητής σε κάποιον άλλο τύπο. Έτσι για παράδειγµα µπορεί η τιµή µιας µεταβλητής ακέραιου τύπου να χρειάζεται να καταχωρηθεί σε µία µεταβλητή πραγµατικού τύπου, ή να περάσει σαν παράµετρος σε µία µέθοδο η οποία είναι ορισµένη µόνο για πραγµατικές µεταβλητές. Η µετατροπή του τύπου µιας µεταβλητής σε έναν άλλο ονοµάζεται µετάπτωση (casting). Για να γίνει αυτό τοποθετούµε τον τύπο στον οποίο θέλουµε να µεταπέσει η µεταβλητή µέσα σε παρενθέσεις µπροστά από το όνοµα της µεταβλητής ή το όνοµα της µεθόδου. Για παράδειγµα η επόµενη πρόταση έχει σαν αποτέλεσµα την µετάπτωση της ακέραιας µεταβλητής που επιστρέφεται από τη µέθοδο calculatearea σε πραγµατική και την ανάθεση της τιµής της στην πραγµατική µεταβλητή f. float f = (float) calculatearea( ); Η διαδικασία της µετάπτωσης δεν είναι πάντοτε ασφαλής καθώς είναι πιθανόν να χαθεί µέρος της πληροφορίας ή να αλλοιωθεί η ακρίβεια µιας τιµής. Παραδείγµατος χάριν όταν έχουµε µετάπτωση µίας τιµής τύπου double σε µία τιµή τύπου float ο µεταγλωττιστής στρογγυλοποιεί αναγκαστικά την τιµή. 7

Για να υπάρχει ασφάλεια κατά τη διαδικασία της µετάπτωσης τύπων θα πρέπει ο τύπος µετάπτωσης να είναι κατ ελάχιστον ίσος σε µέγεθος µε τον αρχικό τύπο. Ο πίνακας που ακολουθεί δείχνει ασφαλείς περιπτώσεις µετάπτωσης πρωταρχικών τύπων σε άλλους Αρχικός Τύπος byte short char int long float Τύπος Μετάπτωσης short, char, int, long, float, double int, long, float, double int, long, float, double long, float, double float, double double Είναι δυνατόν η διαδικασία της µετάπτωσης να ενεργοποιηθεί αυτόµατα από τον µεταγλωττιστή χωρίς να έχει προβλεφθεί από τον κώδικα του προγράµµατος. Στο επόµενο παράδειγµα η τιµή της µεταβλητής ch µεταπίπτει σε ακέραιο (τον αριθµό που κωδικοποιεί τον 'a') και στη συνέχεια υπολογίζεται η boolean τιµή της σύγκρισης στην if: int x = 10; char ch = 'a'; if (x > 'a') {... Σε περιπτώσεις σαν τις παραπάνω µιλάµε για διαδικασία έµµεσης µετάπτωσης (implicit casting). Η έµµεση µετάπτωση κατά κανόνα θα πρέπει να αποφεύγεται σαν επικίνδυνη. 8

Χώρος αποθήκευσης δεδοµένων στη Java. Η στοίβα (stack) Ο σωρός (heap) Στατική περιοχή µνήµης (static storage) Περιοχή σταθερών (constant storage) Καταχωρητές (registers) Δευτερεύουσα µνήµη 9