Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Sonstiges » Off-Topic » Java Applet » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (4): « vorherige 1 2 [3] 4 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Java Applet
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke. Nun bin ich beim Thema casting für Zahlentypen und frage mich, ob ich die elementaren Datentypen falsch verstanden habe. Ich dachte mit byte, short, int, long kann man ganze Zahlen darstellen. Für Kommazahlen wurden nur in Form von Gleitpunktzahlen mit float, double, bigdecimal gehen.

Warum ist dann der Cat von einer Fließkommazahl eine Festkommazahl?

code:
1:
2:
3:
long a = 1234567890123456789L
float b = a // b=1.23456794E18
(long) b // (long) b=1.234567939550609408


Es geht mir hier nicht um die entstadene Ungenauigkeit, sondern wie eine Festpunktzahl möglich ist.

Danke :wave:

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tigerbine: 04.02.2014 10:23.

03.02.2014 13:30 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was hast du getan, um diesen Wert für (long)b zu bekommen?
code:
1:
2:
3:
4:
5:
6:
7:
public static void main(String[] args) {
	long a = 1234567890123456789L;
	float b = a; // b=1.23456794E18
	System.out.println(a); //1234567890123456789
	System.out.println(b); //1.23456794E18
	System.out.println((long)b); //1234567939550609408
}

Zitat:
Für Kommazahlen wurden nur in Form von Gleitpunktzahlen mit float, long, bigdecimal gehen.

ich hoffe, du meintest double, als du long geschrieben hast.

__________________
Syntax Highlighting fürs Board (Link)
03.02.2014 16:17 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das ist ein Beispiel aus "Einstieg in Java, Galileo Computing". Da habe ich einen Punkt vergessen
code:
1:
2:
3:
4:
5:
6:
7:
public static void main(String[] args) {
	long a = 1234567890123456789L;
	float b = a; // b=1.23456794E18
	System.out.println(a); //1234567890123456789
	System.out.println(b); //1.23456794E18
	System.out.println((long)b); //1.234567939550609408



Unten meinte ich double, ja.
03.02.2014 21:05 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich denke dein Verständnis von den Datentypen ist richtig.

Ich habs grad getestet und bekomme folgendes raus.
(long)b ist 1234567939550609408
und (double)b ist 1.23456793955060941E18

Java kennt nativ keine Festkommazahlen, lediglich float und double gemäß IEEE Standard schlagmichtot

Was auch immer in deinem Buch steht, es lohnt sich vielleicht da mit Tippex ranzugehen großes Grinsen
03.02.2014 21:42 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok, danke. Was mir in Codings immer wieder auffällt ist, dass viele Variablen gleich heißen. Das macht es für mich am Anfang etwas schwer zu wissen, welche welche ist.

Beispiel

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public class StringBufferDemo {

   public StringBuffer string(){                                   //Instanzmethode mit Rückgabewert 
            StringBuffer str = new StringBuffer("String")  //Dekl.+Erz+Wertzuweisung
            for (int i=0; i<=10; i++){
                 str.append(str);                                    //Methode von str zur Verkettung
                 }
            return str;                                                 //Rückgabewert str
    }

    public static void main(String[] args){
    StringBufferDemo stretch = new StringBufferDemo //Dekl. + Erz. von Instanz 'stretch'
    StringBuffer str  = new StringBuffer()     //Dekl. Erzeugung von Instanz 'str'
   
    str = stretch.string();   //Wertzuweisung str = Rückgabewert str
    System.out.println("Ergebnis: " + str);
  } 
}


Habe ich das so richtig verstanden? Danke.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tigerbine: 04.02.2014 13:46.

04.02.2014 13:46 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sieht gut aus smile

In Zeile 4, 12, 13 fehlt ein ;
Zeile 12: new StringBufferDemo(), also mit Klammern
Die Zeilen 13 und 15 könnte man auch zusammenfassen:
code:
1:
StringBuffer str  = stretch.string();

oder gleich die ganze main in einer Zeile (mit dem Nachteil, dass du danach nicht mehr auf den String zugreifen kannst, sondern ihn neu erzeugen müsstest):
code:
1:
System.out.println("Ergebnis: " + new StringBufferDemo().string());


__________________
Syntax Highlighting fürs Board (Link)
05.02.2014 05:59 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nächste Frage zu einem Algorithmus. Es soll ein Array sortiert werden. Das soll über zwei Schleifen gehen. Ich tippe einen Auszug erstmal ab.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
for(index = 0; index < (array.length-1); index++){
  for(int j=index; j<(array.length);j++){
    if (array[index]> array[j] {  //Vergleich
       temp = array[index]; //Zwischenspeicher Minimum
       array[index]=array[j]; // Minimum überschreiben
       array[j] = temp; //Vertauschung durch temporären Wert
  }
}


Was ich nicht verstehe

* beim Vergleich, ist da nicht in der ersten Runde index = j, und man erhält 'false' und hätte sich diese Prüfung sparen können?
* Warum Minimum, es wird doch der größere der beiden Werte gespeichert bzw. überschrieben?

Danke für eure Hilfe. smile
05.02.2014 19:59 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo tigerbine,

Zitat:
Original von tigerbine
* beim Vergleich, ist da nicht in der ersten Runde index = j, und man erhält 'false' und hätte sich diese Prüfung sparen können?


Ja, hätte man...

Zitat:
Original von tigerbine
* Warum Minimum, es wird doch der größere der beiden Werte gespeichert bzw. überschrieben?


Richtig verstanden. Die Kommentare sind quatsch.

Zitat:
Original von tigerbine
Danke für eure Hilfe. smile


Bitte Augenzwinkern

VG,

Karlito
05.02.2014 20:09 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke. Daumen hoch

Habe das nun auch mal mit dem Debugger nachvollzogen. Ist ja auch eine gute Übung für eine NewBee
05.02.2014 20:17 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Deklaration Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe da nochmal eine Frage zu. Ich habe eine Klasse Musiker, mit den Attributen name, alter und band, sowie einer Methode musizieren.

Davon leite ich eine Klasee Trompeter ab und überschreibe die Methode musizieren. Ansonsten kommt nichts neues hinzu. Wie kann ich einen Trompeter nun instanziieren?

code:
1:
 Tompeter trompeter = new Trompeter;


wäre für mich die logische Wahl. Warum geht aber auch

code:
1:
 Musiker trompeter = new Trompeter;


die beiden trompeter unterscheiden sich doch nun in der Deklaration. verwirrt Für mich passt der Konstruktoaurruf nicht zur Deklaration. Musiker hat doch gar keinen Konstruktior Trompeter. Und was wäre, wenn der Trompeter noch weitere Methoden hätte (mundstückWechseln oder so). Wie passt dies dann in die Deklaration Musiker rein.

Also kurz und knapp, mit was kann man alles eine Deklaration vornehmen (wenn man z.B. ein UML Diagramm vorsich hat)

Danke Wink
07.02.2014 13:29 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo tigerbine,

code:
1:
Trompeter trompeter;


gibt an, dass trompeter eine Variable vom Typ Trompeter ist.

code:
1:
Musiker trompeter;


gibt an, dass trompeter eine Variable vom Typ Musiker ist.

Jetzt erbt die Klasse Trompeter von der Klasse Musiker. Die Vererbung kann als eine "ist ein"- Beziehung angesehen werden. D.h. Jeder Trompeter ist auch ein Musiker, da jeder Trompeter alle Eigenschaften und Methoden von Musiker besitzt.

Andersherum funktioniert diese Beziehung jedoch nicht, da nicht alle Musiker Trompeter sind.

Es ist also so, dass entlang der Vererbungshierarchie alle spezialisierten Objekte auch den Typ aller geerbten Klassen annehmen kann. In Java ist es so, dass jedes Object auch vom Typ "Object" erbt. Somit ginge auch folgende Zuweisung:

code:
1:
Object trompeter = new Trompeter();


Nutzt man nun letzteres Beispiel, so kann man nur die Eigenschaften und Methoden nutzen, welche in der Klasse Object bereitgestellt werden (z.B. toString()).

Analog kann die Methode "mundstueckWechseln()", die zu der Klasse Trompeter gehört eben auch nicht mehr genutzt werden, wenn der Trompeter einer Variable des Typs Musiker zugewiesen wird.

VG,

Karlito
07.02.2014 14:28 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von Karlito


Nutzt man nun letzteres Beispiel, so kann man nur die Eigenschaften und Methoden nutzen, welche in der Klasse Object bereitgestellt werden (z.B. toString()).

Analog kann die Methode "mundstueckWechseln()", die zu der Klasse Trompeter gehört eben auch nicht mehr genutzt werden, wenn der Trompeter einer Variable des Typs Musiker zugewiesen wird.

VG,

Karlito


Dann habe ich es richtig verstanden, dass die beiden Deklarationen nicht äqivalent sind. Ich wunderte mich, dass in den java Dateien zum Buch eben die andere Deklaration als im Buch war. Aber so habe ich ja wieder was gelernt. Augenzwinkern Danke
07.02.2014 15:08 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Erben Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Folgende Situation, gob gesagt:

code:
1:
2:
3:
4:
5:
class A{
      method a() {} }

class B extends class A {
}


Nun erbt B ja von A. Wie muss ich die Methode a dann aufrufen? Mit super.a() oder this.a()?
Würde sie dann in Fall 2 überhaupt was in B finden, oder weil sie nichts findet in A nach der Methode suchen?
07.02.2014 19:29 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
public class A {
	public void a(){
		System.out.println("a()");
	}
}



public class B extends A{
	public void b(){
		System.out.print("b() -> ");
		a();		
	}
}



public class Main {

	public static void main(String[] args) {
		A a = new A(); B b = new B();
		a.a(); //Ausgabe: a()
		b.a(); //Ausgabe: a()
		b.b(); //Ausgabe: b() -> a()
	}

}


__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 07.02.2014 20:32.

07.02.2014 20:31 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
tigerbine
Grünschnabel


Dabei seit: 03.06.2007
Beiträge: 2

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von eulerscheZahl
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:

public class Main {

	public static void main(String[] args) {
		A a = new A(); B b = new B();
		a.a(); //Ausgabe: a()
		b.a(); //Ausgabe: a()


D.h. ich kann auf "a" auf beiden wegen zugreifen, auch wenn sie nicht in b explizit implementiert ist (was ja ein überschreiben wäre?) Sucht der compiler dann einfach eine Ebene höher, ob er dort die Methode a findet?

Danke dir.
07.02.2014 20:45 tigerbine ist offline Beiträge von tigerbine suchen Nehmen Sie tigerbine in Ihre Freundesliste auf
Seiten (4): « vorherige 1 2 [3] 4 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Sonstiges » Off-Topic » Java Applet