-
AutorBeiträge
-
4. September 2006 um 16:13 #1182dantezTeilnehmer
Programmierung
Formulierung eines Algorithmus zur Lösung einer klasse von Problemen in einer für Computer verständlichen Sprache
Algorithmus:
endlich lange Vorschrift bestehend aus einzelanweisungen zur lösung einer klasse von Problemen
Darstellung von Algorithmen:
Programmablauplan (PAP)
Nassi – Schneidermann – DiagrammeSun – Vorgaben zu Eigenschaften:
einfach
Objektorientiert
verteilt
interpretiert
robust
sicher
archiekturneutral
portabel
hoch-performt
multithreadel
dynamisch„Was ist Java?“
Java ist…
eine plattformunabhängige Programmiersprache, die ursprünglich von der Firma Sun Microsystems, entwickelt wurde. Java wird in allen IT-Bereichen von Handel, Industrie und Verwaltung eingesetzt und ist für unzählige Betriebssysteme und Plattformen, vom mobilen Telefon bis hin zur Echtzeit-Großrechneranlage kostenlos verfügbar.
sowie natürlich die Hauptinsel Indonesiens, als auch eine kleine Insel im Pazifik, deren Hauptexportprodukt Kaffee ist
und damit der umgangssprachliche Ausdruck für Kaffee in den USA.In 6 Stichpunkten:
Java ist…
1. einfach & klein
Java ist für EInsteiger und Profis gleichermaßen geeignet. Einfache Fenster-Anwendungen, Browser-Applets oder komplexe Client-/Server- und Datenbank-Module lassen sich dank der klaren Spracheigenschaften und dem gegenüber C++ verbesserten objektorientierten Konzepts schnell umsetzen.Java kann in der Java 2 Micro Edtion (J2ME) auf sehr kleinen (mobilen) Geräten mit geringen Ressourcen wie Prozessorleistung und Speicherplatz laufen. Die „Java 2 Standard Edition“ ist die Desktop-Variante für Fenster-Applikation (Windows, Linux, Mac, Solaris, ….).
Für mehrschichtige Client-/Server-Anwendungen wird die „Java 2 Enterprise Edition“ angeboten. Hierin finden sich auch Java Servlets und Java Server Pages für die Erstellung interaktiver Webseiten.2. objekt-orientiert & verteilt
„Objekt-orientiert“ ist sicherlich eines der meist-verschlunzten Wörter („Jetzt zugreifen: objekt-orientierte Programme aus der Tube !“), das ändert jedoch nichts daran, daß es sich, aus guten Gründen, in der Software-Entwicklung durchgesetzt hat.Wie der Name schon sagt, konzentriert man sich bei der objekt-orientierten Programmierung auf die Erstellung sog. „Objekte“. Grob gesagt besteht ein Objekt aus Daten und Funktionen (sog. „Methoden“), die diese Daten verändern. Im Idealfall erzeugt man mit objekt-orientierter Programmierung wiederverwendbare Objekte („Klassen“). Bei fortschreitender Programmierung kann man dann auf einen immer größer werdenden Pool an schon bestehenden Objekten zurückgreifen („Klassenbibliotheken“).
Auf entfernt liegende Objekte können Java-Programme sehr einfach über das Internet zugreifen.3. kompiliert & schnell
Java-Programme werden im Gegensatz zu vielen anderen Compiler-Sprachen nicht direkt in eine für einen „echten Prozessor“ verständliche Menge an Befehlen übersetzt, sondern zunächst in den sog. „Java Bytecode“ umgewandelt.Dieser Bytecode ist dennoch sehr maschinennah. Erst auf der Zielmaschine wird er in einer Java Laufzeit-Umgebung ausgeführt (Java Runtime Environment, JRE).
Die Idee mit dem Zwischenschritt ist nicht neu und wird in vielen Compilern „unbewußt“ schon lange verwendet. Viele C/C++ – und Pascal Compiler nutzen diesen Zwischenschritt intern für die Optimierung des Codes, allerdings hinterlassen sie dabei keine „Spuren“, wie er sich bei Java im Bytecode und bei Micro$ofts Java Clone (C#) „Intermediate Language“ genannt wird.
Da bei Java für gewöhnlich zweimal kompiliert wird (einmal beim Entwickler und einmal beim Nutzer), wird dieses Prinzip Just-In-Time Compiler (JIT) genannt. Dies hat neben den genannten Vorteilen natürlich auch den Nachteil, dass Java-Programme länger zum Starten benötigen, da während der Initialisierung der Maschinen-Code erzeugt wird. Auch hier stehen jedoch für die unterschiedlichen Anwendungszwecke ebenso unterschiedliche Laufzeitumgebungen bereit (one size fits all gibt’s nicht). J2EE mit der sog. „HotSpot Performance Engine“ erlaubt den gemischten Betrieb aus interpretiertem und kompiliertem Code: Zur Laufzeit prüft die Umgebung die kritischen Stellen des Codes (die sog. „HotSpots“) und führt darauf weitere Optimierungen durch, so daß das Programm „schneller wird, je länger es anläuft.“ (natürlich nicht für ewig )
4. robust & sicher
Die Kombination Compiler UND Laufzeitumgebung hat für Java unter einem anderen Gesichtspunkt große Vorteile: Einerseits kann der „Vor“-Compiler auf Typenfehler und dergleichen prüfen (Java ist eine typenstrenge Sprache), anderseits kann die Java-Runtime Umgebung Fehler während der Laufzeit abfangen und behandeln – ein kompiliertes Programm würde schlimmstenfalls abstürzen.5. plattformunabhängig & portierbar
Hier wird ein Traum der Software-Entwickler wahr:
Jeder kennt das Problem mit den verschiedenen Rechner- und Betriebssystemen. Auf dem einen läufts, auf dem anderen nicht und für Software-Entwickler ist das alles wirklich ein Graus! (Man stelle sich vor, es gäbe 10 verschiedene Video-Systeme..!)
Auch hier greift das Compiler/Interpreter-Konzept: Der Compiler übersetzt das Programm in den „Bytecode“, der völlig unabhängig von irgendeinem bestehenden Prozessor ist, auf dem das Programm später vielleicht mal läuft.
Ein- und dasselbe Java-Programm läuft ohne Änderung auf allen unterstützten Systemen!!6. „multithread“-fähig & dynamisch
In einem modernen Programm passieren viele Dinge gleichzeitig. Diese Eigenschaft nennt man „multithreading“. Java unterstützt den Entwickler mit verschiedenen Funktionen beim Entwurf solcher parallel-verarbeitender Programme, so daß er sich auf seine eigentliche Aufgabe konzentrieren kann.Weiterhin ist Java durch verschiedene Verbesserungen „dynamischer“ als C++. Das bedeutet: Beziehungen zwischen Klassen und Objekten sind nicht für immer festgelegt. Dadurch können diese, wenn sie sich später ändern, leichter ausgetauscht werden .
Häufige Vorurteile zu Java:
– Java ist gleich Javascript
– Java ist einfach zu erlernen
– Java ist vollständig portabel
– Java ist eine einfache Programmierumgebung
– Java ist eine universelle Programmiersprache
– Java ist einfach eine weitere Programmiersprache
– Java ist eine Revolution in der NetzwerkprogrammierungJava Schlüsselworte:
abstract
assert
boolean
break
byte
case
char
closs
const
continue
default
do
else
enum
extends
final
finaly
float
for
goto
if
implements
import
instanceoff
int
interface
long
nativ
new
package
private
protected
public
return
short
extends
final
finaly
float
for
goto
if
extends
final
finaly
float
for
goto
if
implements
import
instanceoff
int
interface
long
nativ
new
package
private
protected
public
return
short
static
strictfp
super
switch
syncronized
this
throw
throws
transient
try
void
volatile
whileErstellen eines Java-Programms
– Quelltext schreiben
-> Erweiterung .java!!!!
Bsp:
public class java01
{
public static void main(String[ ] argunents)
{
System.out.println(„es geht!“);
}}
– Quelltext kompilieren
Befehl: javac java01.java
der Befehl javac java01.java erzeugt (wenn keine fehler im Quellcode sind) java01.class– Programm ausführen
ausgeführt wird die classdatei java java01Entwicklungen von Java-Anwendungen mit Eclips
– Anwendungen werden in Projekten verwaltet
– jedes Projekt kann mehrere klassen enthalten
– klassen inerhalb der Projekte werden in Paketen (packages) organisiertStruktur eines Java-Quelltextextes
Schlüsselworte
Whitespaces ( leerzeichen,Tab’s,Zeilenwechsel )Kommentare:
Zeilenkommentar ( // Kommentar )
mehrzeilige Kommentare ( /*Kommentar*/ )
javadoc-Kommentare ( /** Kommentar*/ )Trennzeichen
( ) Patrameterliste in Methodendefinitionen
legen Vorrang in Ausdrücken fest
enhalten Ausdrücke in Kontrollanweisungen
umschliessen von cast-typen{ } zum definieren von codeblöcken für klassen und Methoden
enthält Werte automatisch initialisierter Arrays[ ] Deklaririen Arry-Typen
werden zur dereferenzierung von Arry-wertem benutzt; beendet eine Anweisung
, trennt aufeinander folgende bezeicner in einer deklaration
kettet anweisungen in einer voranweisung zusammen. trennt packetnamen von unterpacketen und klassen
trennt eine Variable oder Mehtode von VerweisvariabelnBezeichner:
( Mehtodennamen, Variablennamen,………………)dürfen enthalten:
Buchstaben
Ziffern
Unterstrich
das $-Zeichennahezu unbegrenzte länge
alle Zeichen werden zur unterscheidung benutzt
erste zeichen darf keine Ziffer seinLiterale:
konstante Werte im ProgrammBsp.: System.out.println(„Nicht Hallo Welt!“);
Dateitypen, Variabeln und Arrys:
– Java ist eine streng typisierte Sprache
– jede variable muss einem bestimmten typ zugeordnet sein
und vor ihrer ersten Nutzung deklariert werden
– Java unterscheidet primitive datentypen und verweis datentypenPrimitive Datentypen:
vier Gruppen
ganzzahl typen
Fließkommatypen
Boolsche Typen
Zeichentypen5. September 2006 um 11:47 #2927dantezTeilnehmerGanzzahltypen
generell vorzeichenbehaftetTyp Speicher Wertebereich
byte 8Bit -128…………127
short 16Bit -32768 ……32767
int 32Bit -2.147.483.648………….2.147.483.647
long 64Bit -9.223.372.036.854.775.808……………..9.223.372.036.854.775.807
Fliesskommatypen
generell vorzeichenbehaftetTyp Speicher Wertebereich
float 32Bit 3,4*10 hoch -38………3,4*10hoch38
7-8 Stellen genauduble 64Bit 1,7*10hoch-308……….1,7*10hoch308
15 Stellen genauZeichenTypen
Typ Speicher Wertebereich
char 16 Unicode
Boolsche Typ
Typ Speicher Wertebereich
boolean true bzw. false
zu den Literaten:
Ganzzahlliterale
Dezimalzahlen 179
Oktale schreibweise 077
Hexadezimale schreibweise 0xBAFließkomma-Literale
7.39 double
19.172f float
314.72e -2 double in ExpotentialschreibweiseCharater-Literale
alle Druckbaren Zeichen können direkt in hochkommata angegeben werden
‚a‘, ‚@‘
Angabe auch als Escape-Sequenzen möglich
ddd oktaler Code eines Zeichens
uxxxx Unicode eines Zeichens
)‘ ‚ ‚ ‚
„
\
n Zeilenwechsel
t Tabulator
f Form Feed (Seitenvorschub speziell für Drucker)
r Wagenrücklauf
b BackspaceString-Literale
grundsätzlich in AnführungsstricheenTypkonvertierungen:
automatisch
finden statt:
– beide Typen kompatibel sind
– der Zieltyp größer ist als der Quelltypmanuelle inkompatibler Typen (Casten)
Bsp.: byte b;
short s=139;
b=(byte)s;Typpromotion in Ausdrücken
– alle short- und byte-Werte werden int
– ist ein Operand vom Typ long, wird der gesamte Ausdruck long
– ist ein Operand vom Typ float, wird der gesamte Ausdruck zu float
– ist ein Operand vom Typ double, wird der gesamte Ausdruck doubleBitweise Darstellung von Ganzzahlen, Zweier komplemt:
Bsp.: byte
– Stellenwertsystem 2(7) 2(6) 2(5) 2(4) 2(3) 2(2) 2(1) 2(0) in klammern stehen hoch zahlen
90 0 1 0 1 1 0 1 0
150 1 0 0 1 0 1 1 0-Vereinbarung. Vorzeichenbehaftete Werte werden über
das höchstwertige Bit gekennzeichnet
0 –> nicht Negativ
1 –> Negativ-negative Zahlen werden als zweirkomplement Codiert
–> Bitdarstellung des positiven Wertes notieren
–> jedes Bit in sein gegenteil umschreiben
–> im letzten Bit 1 addierenBsp.: -1
Schritt 1 00000000 ( Bitdarstellung des positiven Wertes notieren )
Schritt 2 11111110 ( jedes Bit in sein gegenteil umschreiben )
Schritt 3 + 1 ( im letzten Bit 1 addieren )
Ergebniss 11111111 ( -1 )
Variablen in Java-Programmen
– Bezeichnung für einen Speicherbereich
– immer typisiert
– innerhalb des Programms wird bei lesendem zugriff der gespeicherte Wert benutzt
–> vor erstem lesezugriff muss eine bewertung erfolgen
–> vor erster bewertung muss Deklaration stehenGültigkeitsbereich und lebensdauer
– jede Variable ist in dem Codeblock gültig in dem sie deklariert wurde
– der gleiche Bezeichner darf je Gültigkeitsbereich nur einmal vergeben werden
– Es gibt Variablen die in einer klasse gültig sind (Klassenvariablen), sie werden ausserhalb von Methoden deklariert
– Variablen, die in einer Methode deklariert werden, sind nur innerhalb dieser Methode bekannt (Methodenvariablen)Arrays
– Platzhalter für Gruppe von Variablen gleichen Typs, die damit unter einem Namen ansprechbar sind
– Deklaration: Typ[] Bezeichner
Bsp.: int[] feld– Erzeugen Bezeichner=new typ[anzahl];
Bsp.: feld=new int[5];– Zugriff auf Arrayelemente
Bezeichner[index] 0<= index < Anzahl Bsp.: feld[0] , feld[1] , feld[2] , feld[3] , feld[4] , feld[5] – Variante zur Initialisierung:
Bsp.: typ[]Bezeichner={wert,wert,wert,……}– mehrdimensionale Arrays
Bsp.: int[][] zweiD=new int[2][4];Operatoren
– Arithmetische Operatoren
+ Addition
– Subtraktion
* Multiplikation
/ Division
% Modulo
++ Inkrement Präinkrement ++a Postinkement a++
— Dekrement Prädekrement –a postdekrement a–
– Zuweisungsoperatoren
–> statt a=a+4 ist a+=4 zuschreiben
–> schreibweise ist für alle grundrechenarten gegebenBitweis Operatoren
Operator Bedeutung
& bitweises UND 1&1 –> 1 1&0 –>0
| bitweises ODER 0|0 –> 0 rest liefert 1
^ bitweises exclusiv ODER 1^1 –> 0 1^0 –> 1
~ bitweise Negation ~1 –> 0 ~0 –> 1
<< linksverschiebung >> rechtsverschiebung
>>> rechtsverschiebung mit nullauffüllung
Erweiterung zu den Bitweisen Operatoren
– bitweise Operatoren exsistieren auch als zuweisungsoperatoren
Bsp:.: int a=2;
a&=7; –> a=a&7;Vergleichsoperatoren ( typ boolean da ausgabe des Verglechs als true oder false )
= = Gleich
! = ungleich
> größer
> = größer oder gleiech
< kleiner < = kleiner oder gleich
Logische OperatorenOperator Bedeutung Bsp.:
& Logisches UND 7 > 3 & 2 < 1 | Logisches ODER 7 > 3 & 2 < 1 ^ Log.Exkl. ODER 7 > 3 ^ 2 > 1
&& Log.UND mit x != 0 && 7/x < 5
Kurzschluss- x != 0 false, der rest muss nicht mehr ausgewertet werden
auswertung x == 0 true, der rest muss nicht mehr ausgewertet werden|| Log.ODER mit x == 0 || 7/x > 9
Kurzschluss- x == 0 true, der rest muss nicht mehr ausgewertet werden
auswertung x !=0 false, der rest (7/x > 5) muss weiter ausgewerte werden! Log. NICHT ! 7 < 5 Zuweisungsoperatoren Operator Bedeutung Bsp.: boolean x=true,4;
& = x&= y=false;
x&0 a> b;| =
^
Vorrangregeln
höchser Rang
( ) [ ] .
++ — ~ !
* / %
+ –
>> >>> << > >= < <= == != & ^ | && || ?: = op= niedrigster Rang
Bedingungsoperator– Syntax :
– Log. Ausdrück ? Ausdruck 1 : Ausdruck 2– der Logische Ausdruck wird ausgewertet
ist das ergebniss true wird Ausdruck 1 ausgewertet
und das ergebnis zurückgegeben, sonst wird
Ausdruck 2 ausgewertet und zurückgegebenProgramme Struckturieren
Verzweigungen
In Abhängigkeit von Bedingungen zu entscheiden welche Anweisung/Anweisungen
weiter auszuführen sindVarianten:
Bedingungsprüfung mit if
Fallunterscheidung mit switch
MethodenaufrufBedingungsprüfung mit if
– einfache Verzweigung
Syntax if(Bedingung) | if(Bedingung)
Anweisung; | {
| Anweisung 1;
| Anweisung 2 :
| }– zweifache Verzweigung
Syntax if(Bedingung) | if(Bedingung)
Anweisung a; | {
else | Anweisung a1;
Anweisung b; | Anweisung a2;
| .
| .
| Anweisung an
| }
| else
| {
| Anweisung b1
| Anweisung b2
| .
| .
| Anweisung bn
| }Fallunterscheidung
Syntax: switch (Ausdruck)
{
case w1:
Anweisung(en);
break;case w2:
Anweisung(en);
break;[default:
Anweisung(en);]}
Schleifen in Java ( wiederholte ausführung von Anweisungen )
Abbruchschlefen
– Durchlaufzahl vorher unbekannt
– wiederholung des durchlaufs hängt von bedingung ab
– Abbruchschhleifen gibt es in zwei varianten1) Kopfgesteuerte Abbruchschleife (die sogenante Abweisende Schleife)
Syntax: while (Bedingung)
{
Anweisung(en);
}2) Fussgesteuerte Abbruchschleife (die sogenante annehmende Schhleife
Syntax: do
{
Anweisung(en);
}
while (Bedingung);Zahlschleifen
Durchlaufzahl vor beginn der Abarbeitung bakannt
Syntax: for( Initiasierungsausdruck, Prüfungsausdruck, iteration )
{
Anweisung(en);
}– Schleifenstornierung über break
innerhalb des Schleifenkörpers ist der Schleifenkörper über break möglich
break kann zusätzlich zum Prüfausdruck oder als Ersatz für den Prüfausdruck eingesetzt werden5. September 2006 um 12:16 #2929kreyTeilnehmerDas hast du schön kopiert.
Also außer Kopfschmerzen bringt mir der Text nichts.Wieso nicht einfach
!google „javainsel“
5. September 2006 um 12:44 #2933dantezTeilnehmerkopiert ja (hatte irgenwie etwas dagegen 16 seiten ernuet zu schreiben)
da ich so oder so vor einem computer sitze und dessen BS über die fähigkeit verfügt andere Programme auszuführen (WinXP Prof.) hab ich mir gedacht das ich doch einfach diese möglichkeit nutzen kann (ectl. erkennt man das an vorhandenen rechtschreibfehlern ist nämlich nicht gerade meine stärke)sind meine aufzeichnungen
also bevor man mäkert, selber machen
mfg
5. September 2006 um 12:48 #2934kreyTeilnehmerQuote:Original von DanteZ
kopiert ja (hatte irgenwie etwas dagegen 16 seiten ernuet zu schreiben)
da ich so oder so vor einem computer sitze und dessen BS über die fähigkeit verfügt andere Programme auszuführen (WinXP Prof.) hab ich mir gedacht das ich doch einfach diese möglichkeit nutzen kann (ectl. erkennt man das an vorhandenen rechtschreibfehlern ist nämlich nicht gerade meine stärke)sind meine aufzeichnungen
also bevor man mäkert, selber machen
mfg
Ich wollte nicht Mäkeln sondern nur fragen wozu du das machst. Die Sachen gibts doch schon in tausendfacher Ausführung. Und außerdem bringen DIESE Sachen nur am rande etwas wenn du einen SCJP machen willst.
5. September 2006 um 12:53 #2935dantezTeilnehmeralso ich strebe eine sun zertifizierung „Java-Programmer“ an
diese beinhaltet unter anderem auch das programmieren für mobile endgeräte.mfg
5. September 2006 um 12:55 #2936kreyTeilnehmerQuote:Original von DanteZ
also ich strebe eine sun zertifizierung „Java-Programmer“ an
diese beinhaltet unter anderem auch das programmieren für mobile endgeräte.mfg
Ich sagte doch SCJP (Sun Certified Java Programmer).
Aber was bringen die Themen hier im Forum?5. September 2006 um 13:01 #2937dantezTeilnehmerich denke in erster line fun, mann lernt sicher dadurch nicht umfassend java aber mann erhält einen kleinen einblick (hoffe ich zumindest)
ausserdem macht es spass so zu üben
6. September 2006 um 7:32 #2939der_unwissendeTeilnehmerHm, ich bin gerade in dieses Forum gestolpert und wollte mir durch Beiträge wie diesen einen Überblick verschaffen. Du hast jetzt den ersten Beitrag erwischt, den ich mir angeschaut habe, deswegen gibt es auch keinen Vergleich zu anderen Beiträgen, aber ich würde dringen raten den Titel zu ändern!!!
Das ist echt die schlechteste Einführung die ich je gelesen habe. Wem soll es denn Spaß machen sich alle Schlüsselworte von Java anzuschauen? Willst du nicht vielleicht noch alle Packages aufzählen?
Das Objekt Orientiert von dir ohne Ende (und ohne Erklärung) benutzt wird, und du dann sagst dass das Wort missbraucht wird spricht für sich.
Übringens ist Java nicht wirklich Objekt Orientiert, da es primitive Datentypen gibt, aber dass nur nebenbei.Sorry, ist nicht gegen dich gerichtet, wünsch dir auch viel Glück bei der Zertifizierung! Aber du hast echt einen Titel gewählt, der Anfängern das Gefühl geben könnte, dass sie hier Java lernen. Wenn die sich dann deine Beiträge durchlesen fürchte ich haben die nicht viel von. Es fehlt komplett alles was imho einen guten Kurs ausmacht. Du darfst doch hier nicht von Vorwissen ausgehen! Einfach mal so anfangen wie es jmd. ohne jegliche Kenntnisse Versteht.
Damit wäre der Anfang zwangsläufig was willst du zeigen? Was ist Java? Warum?…Gruß Der Unwissende
6. September 2006 um 12:41 #2940whitenexxTeilnehmerQuote:Original von DanteZ
ich denke in erster line fun, mann lernt sicher dadurch nicht umfassend java aber mann erhält einen kleinen einblick (hoffe ich zumindest)ausserdem macht es spass so zu üben
Stimmt Auch wenn ich nichts checke davon (noch nicht) finde ich es toll, dass du sowas machst. (Forum=Neu, also netter Content *freu*)
Auf richtigkeit kann ich leider nicht prüfen, da ich ja noch keine Ahnung von Java habe. -
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.