Samelsarium Grundlegender Fragen 2

milawe

Mitglied
Vielen Dank für eure bisherige Hilfe, zurzeit beschäftigen mich folgende Fragen:

1. Warum hat bei folgendem Ausdruck das logische Und einen höheren Rank als das logische Oder(hier als II) (trotz gegenteiliger Aussage in der Operatinenrangtabelle)? System.out.println(A&&B II C)?

2. Was versteht man unter folgender Aussage (aus dem Openbook S.133): "Auch wenn Ausdrücke wie a()+b()*c() zuerst das Produkt gebildet wird, schreibt doch die Auswertungsreihenfolge von binären Operatoren vor, das der linke Operand zuerst ausgewertet werden muss, was bedeutet, dass Java zuerst die Methode a() aufruft." Was versteht man unter der Auswertugnsreihenfolge von binären Operatoren? Es gilt doch für alle arithmetischen Operatoren Punkt vor Strich?

3. Wie kann ein boolean Wert einen Zustand ändern bzw. wann kann oder sollte man nicht die beiden Seiten eines Gleichheitsoperators vertauschen? (Openbook S, 130)

4. Warum ist println(println()) fehlerhaft? Println benötigt ja keinen Parameter ist den kein Ausdruck nicht gleich einer leeren Klammer?

5. Wie funktionieren geschachtelte Schleifen?
6. Wie funktionieren for-Schleife mit Kommaoperator?
7. Spielen die Rundungsfehler beim Rechnen mit Double keine Rolle? Bzw. sollte man überhaupt mit Gleitkommazahlen rechnen/programmieren?
8. Warum sollte man statt a>=23&&a<=42 a>23&&a<43 schreiben?
9. Was versteht man unter variablen Argumentlisten und warum ermöglichen sie das Methoden belieb viele Argumente zugewiesen werden kann? Versteht man darunter, das durch die Platzhalter Parameter verschiedener Datentypen durch eine Methode ausgegeben werden können?
10. Wann ist ein "Durchfall" bei einem switch Operator sinvoll? Man kann doch die Bedingung im Bedinungskopf bei einer if Anweisung durch logische Operatoren kompakter darstellen?
11. Was versteht man unter: "Wird die for-Schleife zum Durchlaufen einer Variablen genutzt, so heisst der Schleifenzähler Zählvariable oder Laufvariable"?

Und allgemein wie gewöhnt man sich den Umgang und den Einsatz der Verzweigungen und Schleifen an? Ich bin da sehr schwerfällig und bei einer Verschachtelung ist oftmals Schluss.
 
K

kneitzel

Gast
Dann versuche ich mich erneut an Deinen Fragen.

Erst einmal evtl. wichtig: Vermutlich haben viele hier das Buch "Java ist auch eine Insel" nicht als Buch. Seitenzahlen bringen uns daher nicht wirklich etwas. Evtl. die Stelle online heraus suchen und dann den Link Posten?

1) Wo hast Du das gefunden, dass das Oder einen höheren Rang haben sollte? http://openbook.rheinwerk-verlag.de...02_005.htm#mj001aa1d35c1746f2106c8a28aff843e8 besagt genau das Gegenteil. Erst kommt && und dann ||.

2) Binäre Operatoren sind Operatoren, die zwei Operanden haben. Und Du hast hier Funktionsaufrufe. Ehe Java die Operationen angeht, führt Java alle Aufrufe von rechts nach links aus. Kannst Du auch recht einfach testen mit folgender Test.java Datei:

Java:
public class Test {
    public static int a() {
        System.out.println("a");
        return 1;
    }
    
    public static int b() {
        System.out.println("b");
        return 2;
    }
    
    public static int c() {
        System.out.println("c");
        return 3;
    }
    
    public static void main(String[] args) {
        System.out.println(a() + b() * c());
    }
}
Ausgabe ist:
a
b
c
7
Also due Ausführung der Aufrufe erfolgt von Rechts nach Links, Aber die Rückgabewerte selbst werden dann so verwendet, dass erst 2*3 gerechnet wird und dann 1 addiert wird.

3) Diese Frage verstehe ich gerade nicht. Was genau meinst Du? Seite 130 sagt mir jetzt nichts, da mir das Buch nicht vorliegt ....

4) Nein, kein Parameter ist etwas anderes als ein void Parameter (den es in Java nicht gibt). Eine Funktion wie public void test(void a){} funktioniert in java nicht. Die Java Language Specification sieht da eine Variablen Definition vor und void ist da kein gültiger Typ.

5) Geschachtelte Schleifen sind einfach eine Schleife, die im Körper einer anderen Schleife sind. Und wenn nun die äußere Schleife einen Durchgang hat, kommt sie zu der inneren Schleife und dann wird diese so lange durchlaufen, bis diese beendet ist.

6) Komma ist kein Operator sondern ein Separator. So kann man z.B. bei der Definition von Variablen, mehrere in einer Zeile Definieren: int a=1, b=2; Und das kann man auch innerhalb des Kopfes einer For-Schleife nutzen (Sowohl bei der Definition der Schleifenvariablen als auch im 3. Teil in dem die Veränderung durchgeführt werden kann),

7) Rundungsfehler spielen generell immer eine Rolle. Daher muss man sich darüber auch Gedanken machen. Gleitkommazahlen haben eine gewisse Genauigkeit und wenn man etwas berechnet, dann sollte sicher gestellt sein, dass die Genauigkeit ausreichend ist. Aber wenn der Gleitkommazahl-Typ für den benötigten Anwendungsbereich ok ist, dann kann dieser genutzt werden. Es kann Geschwindigkeitsvorteile bringen, wenn man statt mit Gleitkommazahlen mit Ganzen Zahlen rechnet, so dass sich da Überlegungen lohnen können. Beispiel wäre z.B. die Erfassung von Preisen in Cent statt in Euro. Aber wenn man eine Gleitkommazahl in ganzen Zahlen darstellen will, dann kommt man ehh auf eine Darstellung wie sie intern auch benutzt wird....

8) Sollte man das? Im Augenblick sehe ich da keinen wirklichen Grund zu. Generell hat man gewisse Grenzen und man hat selten solche Ausdrücke. Man hat eher etwas wie a <=b und das könnte man umschreiben zu a < b+1 ... Man kann sich jetzt gerne streiten, was besser ist, ich würde zu dem greifen, was ich im Pseudocode gesagt hatte. Also wenn es von Anfang an ein kleiner oder gleich war (Fragestellung: Reicht mein vorhandenes Geld a um Produkt mit Preis b zu kaufen), dann würde ich das klar als <= ausdrücken. Sonst ist die Frage, wieso ich 1 zu dem Preis addiere... Wenn da aber das +1 im Pseudocode schon drin war, dann würde ich dies auch so im Code lassen, damit es lesbar ist und bleibt. (Lesbarkeit ist hier also sehr wichtig in meinen Augen.)

9) Variable Argumentenliste bedeutet, dass (ggf. nach definierten Argumenten) eine beliebige Menge weiterer Argumente eines Typs kommen können. Dies ist dann eigentlich nur eine andere Schreibweise für ein Array.

Also ein public void test (int... x) ist eigentlich nur ein public void test (int[] x). Innerhalb der Funktion greift man jetzt auf ein Array aus int Werten zu. Aber der große Unterschied ist, dass bei letzterem der Compiler einem Arbeit abnimmt und der Code so lesbarer wird:
Bei erster Version kann man die Funktion einfach so aufrufen: test(1,2,3) oder test() oder .... Bei der zweiten Version müsste ich immer ein Array erzeugen. Das kann ein array mit 0 oder mehr Elementen sein, aber ich muss er erzeugen.

Aber wichtig: Die beiden Definitionen von test sind natürlich nicht das gleiche. "ist eigentlich nur" soll also nur die Ähnlichkeit aufzeigen!

10) Sobald bei einem case ein Befehl folgt, sollte mit einem break; nicht mehr durchgefallen werden. Ein Durchfall sollte nur erfolgen, wenn Elemente komplett gleich zu behandeln sind und die Blöcke, bei denen man durchfällt, ganz leer sind.
Aber da muss jeder für sich entscheiden, was er für lesbar hält und was nicht.

11) Da definiert jemand, was er unter "Zählvariable" oder "Laufvariable" verstehen möchte. Die Variable, die in der for() Schleife definiert wird, soll so heissen, vorausgesetzt, da wird etwas durchgezählt.

Hoffe, das war halbwegs verständlich.
 
K

kneitzel

Gast
An was scheitert es?
a) binäre Operationen sollte trivial sein. Unäre, Binäre, Ternäre Operatoren ... Also ein, zwei oder drei Operanden.
b) Reihenfolge der Funktionsaufrufe bei a() + b() * c()
Hier könnte man ja meinen, dass er erst b() und c() aufruft und dann erst a(). Aber dem ist nicht so. Es wird tatsächlich erst a(), dann b() und am ende c() aufgerufen. Die Reihenfolge der Funktionsaufrufe ist somit nicht gleich der Reihenfolge der Operatoren in der Berechnung.
 
K

kneitzel

Gast
Ach ja ... natürlich! ... Selbstverständlich von Links nach Rechts.... Dummer Fehler :)
 

milawe

Mitglied
Vielen Dank, ich glaube mir sind nun alle Fragen bis auf 1) klar.
Das logische Und hat doch eine Priorität von 10 und das logische Oder eine von 11, müsste da nicht das logische Oder vorher betrachtet werden?
 

Meniskusschaden

Top Contributor
Das logische Und hat doch eine Priorität von 10 und das logische Oder eine von 11, müsste da nicht das logische Oder vorher betrachtet werden?
Nein, jeder niedriger die Rangnummer, desto früher wird es ausgeführt. Im normalen Sprachgebrauch hat "Priorität 1" üblicherweise ja auch "höchste" Priorität und "Priorität 2" eine etwas niedrigere. Das ist manchmal vielleicht etwas paradox.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5
B fragen zur for-schleife und arrays Java Basics - Anfänger-Themen 8
J 2 Fragen zu Befehlen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben