1 / 18

Grundgerüst eines Java - Programms : /* Datei A.java */ package ein.package; // optional

Grundgerüst eines Java - Programms : /* Datei A.java */ package ein.package; // optional // beliebig viele ,import'-Referenzen: import B; // B.class import java.util.Vector; // Vector.class // genau eine ,public'-Klasse: public class A { // beliebig viele Elemente von A

Download Presentation

Grundgerüst eines Java - Programms : /* Datei A.java */ package ein.package; // optional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundgerüst eines Java - Programms: /* Datei A.java */ package ein.package; // optional // beliebig viele ,import'-Referenzen: import B; // B.class import java.util.Vector; // Vector.class // genau eine ,public'-Klasse: public class A { // beliebig viele Elemente von A float a; // Variable a int f() {...} // Methode f() double g() {...} // Methode g() public static void main( String argv[] ) { ... } class NurlmPackageNutzbar { int f() {...} /* Ende der Datei A.java */ HS Merseburg WS 06/07

  2. Kommentare In Java gibt es folgende Kommentartypen: // Zeilenweise Kommentare /* Beginn / Ende Kommentar */ einschließlich \r, \n, \r\n /** Dokumentationskommentar */ • Zeichensätze / Unicode • Java benutzt eine sogenannten Unicode mit 16 bit / Zeichen. Damit sind 65.535 unterschiedliche Zeichen codierbar. • Die Java-Umgebung wandelt ASCII oder Latin-1 Dateien beim Einlesen in den Unicode um. • Die allgemeine Darstellung des Unicodes lautet: • \udddd // d = hexadezimalziffer HS Merseburg WS 06/07

  3. Ziffern in Unicode (Auszug) Unicode Beschreibung \u0030 - \u0039 ISO-Latin-1 (und ASCII)-Ziffern \u0660 - \u0669 Arabisch-IndischeZiffern \u06f0 - \u06f9 Ost-Arabisch-Indische Ziffern \u0966 - \u096f DewanagarischeZiffern \u09e6 - \u09ef BengalischeZiffern \u0a66 - \u0a6f Gurmukhi-Ziffern \u0ae6 - \u0aef Gujarati-Ziffern \u0b66 - \u0b6f Oriya-Ziffern .... Buchstaben und Ziffern in Unicode (Auszug) Unicode Beschreibung \u0041 - \u005A ISO-Latin-I (+ ASCII) lateinische Großbuchstaben (,A'-'Z') \u0061 - \u007A ISO-Latin-1(und ASCII) lateinische Kleinbuchstaben (,a'-'z') \u00C0 - \u00D6 ISO-Latin-l, ergänzende Buchstaben \u00D8 - \u00F6 ISO-Latin-1, ergänzende Buchstaben \u00F8 - \u00FF ISO-Latin-1, ergänzende Buchstaben \u0100 - \u1FFF Latin Erweiterung-A, Latin Erweiterung-B, ..... HS Merseburg WS 06/07

  4. Die Klasse Character beinhaltet einige Methoden zur Überprüfung, ob es sich • um ein Zeichen oder eine Ziffer handelt: • Character.isJavaLetter() = true, wenn Zeichen Unicode–Buchstabe • Character.isJavaLetterOrDigit()= true, wenn Zeichen ein Buchstabe • oder Ziffer ist • Namenskonventionen • Folgende Konventionen sollten bei Bezeichnern eingehalten werden: • Klassen- / Schnittstellename beginnen mit Großbuchstaben • Methoden- / Variablennamen beginnen mit Kleinbuchstaben • Packagenamen werden klein geschrieben • Konstanten alles groß • Unterstriche nur für mehrteilige Konstanten • Zugriffsmethoden set(X) get(X) HS Merseburg WS 06/07

  5. Beispiel: package DE.fh-merseburg.de.informatik.javaclasses; import java.util.Date; class EineKlasseMitEinemLangenNamen { String s; double radius; double nochEinDouble; final int MAX_VALUE = 2001; double eineDoubleMethode() ... int eineIntMethode() ... void setRadius( double d ) ... double getRadius() ... } HS Merseburg WS 06/07

  6. Literale Literale sind Quelltextdarstellung des Wertes eines primitiven Datentyps, eines Strings oder das NULL Symbol. Außer der Darstellung der Unicode Zeichen (\uxxxx) ergeben sich bei Literalen in Java keine Abweichungen zur C-Schreibweise. Schlüsselworte abstract double int static boolean else interface super break extends long switch byte final native synchronized case finally new this catch float null throw char for package throws dass goto* private transient* const* if protected try continue implements public void default import return volatile do instanceof short while HS Merseburg WS 06/07

  7. In Java werden folgende Arten von Datentypen unterschieden: Elementare Datentypen Felder Klassen Referenztypen Schnittstellen Elementare Datentypen ·boolean für logische Werte, ·char für Zeichen, ·Integertypen byte, short, int,long ·Fließkommatypen float, double. In Java werden folgende Arten von Datentypen unterschieden: Elementare Datentypen Felder Klassen Referenztypen Schnittstellen Elementare Datentypen ·boolean für logische Werte, ·char für Zeichen, ·Integertypen byte, short, int,long ·Fließkommatypen float, double. } HS Merseburg WS 06/07

  8. Zugriffe auf eine Variable eines elementaren Typs liefern oder setzen immer direkt den Wert dieser Variable. Es sind keine Pointer auf Variable eines elementaren Datentyps möglich. Ebenso kann die Adresse dieser Variablen nicht ermittelt werden. Die Übergabe eines elementaren Datentyps als Argument an eine Methode erfolgt immer by-value durch Kopieren des Wertes. Referenztypen stehen für Objekte, auf die über einen Pointer (eine Referenz) zugegriffen wird. Pointer werden von Java automatisch verwaltet und können nicht modifiziert werden. HS Merseburg WS 06/07

  9. Wertebereiche, Defaultwerte und der benötigte Speicherplatz: Typ Wertebereich Default Größe byte -128... 127 0 8 bit short -32768... 32767 0 l6 bit int -2147483648... 2147483647 0 32 bit long -9223372036854775808... 0L 64 bit 9223372036854775807 char \u0000... \uFFFF \u0000 l6 bit boolean false, true false 1 bit float +-3.40282E+38 0.0F 32 bit double +- l.79769E+308 0.0D 64 bit HS Merseburg WS 06/07

  10. Berechnungsgrundsätze: • Der Operand des kleineren Typs wird automatisch und ohne Informationsverlust in den benötigten größeren Typ konvertiert, bevor die Operation ausgeführt wird. • Eine Zuweisung an den Typ byte oder short muß immer mit einer expliziten Typkonvertierung geschrieben werden: • byte b1, b2 = 42, b3 = 69; • int i = 2147483647, i2 = 0xfedcba98; • long k = 2147483648L, k2 = 0x0001000200030042L; • i = b2 + b3; // ok. • b1 = b2 + b3; // Fehler! • b1 = (byte)(b2 + b3); // ok. • b3 = (byte) k2; // ok, liefert 0x42 HS Merseburg WS 06/07

  11. Casting Die Typkonventierung (,,Casting") erfolgt wie in C/C++ mit: (Datentyp) Ausdruck Die Umwandlung eines kleineren in einen größeren Typ wird vom Compiler bei Bedarf automatisch in der Reihenfolge (von links nach rechts) byte short int long float double char int long float double vorgenommen. Bei Konvertierung eines größeren Typs in einen kleineren Typ (etwa von long nach int oder von short nach byte) werden nur die passenden unteren Bits kopiert und die höherwertigen Bits abgeschnitten. Diese Konvertierungen werden deshalb niemals von Java automatisch vorgenommen, sondern müssen immer mit einem Cast ausdrücklich angefordert werden. HS Merseburg WS 06/07

  12. Der Typ char • char repräsentiert Unicode-Zeichen, die als vorzeichenloser 16 bit Wert gespeichert werden. Die Zeichenliterale werden in einfache Anführungszeichen geschrieben: • char c1, c2, c_a, c_b, c_A; • c_a = ´a´; • c_b = ´b´; • c_A = ´A´; • c1 = ´\n´; • c2 = ´\u4321´; • Bei Unicode-Zeichen im Bereich unter 255, (ASCII bzw. Latin-l Zeichen) gibt es keine Unterschiede zu char in aus C. Einige Zeichen können auch über die ESC – Sequenzen erreicht werden. HS Merseburg WS 06/07

  13. Sequenz Bedeutung \n Zeilenvorschub (engl. new line) (\u000A) LF \t Tabulator (\u0009) HT \b Backspace (\u0008) BS \r (Wagen-)Rücklauf (engl. return) (\u000D) CR \f Seitenvorschub (engl. form feed) (\u000C) FF \\ der inverse Schrägstrich (engl. backslash) selbst (\u005C) \‘ Apostroph (engl. single quote) (\u0027) \“ Anführungsstriche oben (engl. double quote) (\u0022) \dddein durch seinen oktalen Wert angegebenes Zeichen, \uddddein Unicode-Zeichen, wobei jedes d eine hexadezimale Ziffer ist Alle für Integertypen zulässigen Operationen können auch mit char durchgeführt werden. Die Zuweisung von char zu einem short oder byte – Typ per Typkonvertierung erfolgt durch Kopieren der Bits, wobei aus einem (zwingend positiven) char negative Werte entstehen können. HS Merseburg WS 06/07

  14. Daten Gehalt: Name: Alter: Termine: Daten Gehalt: Name: Alter: Termine: class Bankangestellter class Bankangestellter Der Typ boolean Boolean wird zur Darstellung der logischen Werte mit den Literalen false und true verwendet. Um den Mißbrauch von Integerwerten für logische Werte zu verhindern, verbietet Java Typumwandlungen zwischen den Integertypen und dem Typ boolean. HS Merseburg WS 06/07 Methoden beratenKunde() ... abhebenGeld(aBetrag) if aBetrag<>0 then send Konto abbuchen ... send Kassenautomat ... else... vereinbarenTermin() .... Methoden beratenKunde() ... abhebenGeld(aBetrag) if aBetrag<>0 then send Konto abbuchen ... send Kassenautomat ... else... vereinbarenTermin() ....

  15. Die Fließkommatypen float und double Die Fließkommatypen float und double entsprechen dem Standard IEEE-754 für Gleitkommaarithmetik. Eine float-Variable wird intern mit 32 bit gespeichert und in der Forrn s * m * 2e dargestellt, mit der folgenden Bedeutung s: Vorzeichen +-, m: Mantisse - ein positiver Integerwert < 224 e: Exponent - Integerwert zwischen einschließlich - 149 und 104. Dies entspricht etwa dem Bereich von +-3.40 1038 mit einer Genauigkeit von 6 bis 7 Dezimalstellen. HS Merseburg WS 06/07

  16. Eine double-Variable wird in 64 bit gespeichert, wobei die Mantisse kleiner als 253 ist und der Exponent zwischen -1045 und +1000 liegt. Darstellbare double Werte liegen im Bereich von etwa +-1.798 * 10308 mit einer Genauigkeit von etwa 15 Dezimalstellen. Die Schreibweise von Fließkommazahlen entspricht den auch in C/C++ üblichen Konventionen. Literale des Typs float müssen mit einem angehängten ´F´ gekennzeichnet werden (ansonsten double-Werte). Der genaue Wert der Zahlenbereiche kann über Konstanten der Klassen java.Float bzw. java.Double (Achtung Grossschreibung) ermittelt werden. • Das Resultat einer arithmetischen Operation ist nur dann vom Typ float, • wenn beide Operanden vom Typ float sind oder • ein Operand float und der andere Operand ein Integerwert (außer long) ist. HS Merseburg WS 06/07

  17. Fließkommaoperationen lösen in Java keine Fehlerbedingungen aus (auch nicht die Division durch Null). Falls ein Überlauf entsteht, wird dem Resultat der spezielle Wert ,,unendlich" zugewiesen: /* Werte für +/- unendlich: Float.POSITIVE_INFINITY; Float.NEGATIVE_INFINITY Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY */ float f = Float.MAX_VALUE; float g = Float.POSITIVE_INFINITY; if (f == g) ... //false! Das Ergebnis von undefinierten Operationen, z.B. beim Aufruf von Math.sqrt(-1), ist der Wert Double.NaN (,,Not-a-Number") bzw. Float.NaN. HS Merseburg WS 06/07

  18. Konstanten Alle Variablen der elementaren Typen können durch das Attribut final als Konstanten markiert werden. Sehr häufig werden final-Variablen gleichzeitig als static definiert. Eine final-Variable muss natürlich sofort bei ihrer Deklaration initialisiert werden, da der Wert später nicht mehr geändert werden kann: final char MAX_VALUE = ´\uffff´; static final double PI = 3.14159265358979323846; final static int MIN_PRIORITY = 1; final static int MAX_PRIORITY = 10; HS Merseburg WS 06/07

More Related