Der Typ eines Objekts in Java (Der Typ eines Objekts in Java), Information, Seite 724200
https://www.purl.org/stefan_ram/pub/objekttyp_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Der Typ eines Objekts in Java 

Konstanz des Objekttyp

Der Typ eines Objektes ist unveränderlich, er wird durch den Typ für den Namen des Objekts nicht beeinflußt.

Main.java

public final class Main
{

public static void show( final java.lang.Object o )
{ java.lang.System.out.println( o.getClass() ); }

public static void main( final java.lang.String[] args )
{ final java.lang.String s = "abc"; show( s );
final java.lang.CharSequence cs = s; show( cs );
final java.lang.Object o = s; show( o ); }}

Protokoll
class java.lang.String
class java.lang.String
class java.lang.String
Main.java

public final class Main
{

public static void show( final java.lang.Object o )
{ java.lang.System.out.println( o.getClass() ); }

public static void main( final java.lang.String[] args )
{ java.lang.Object o;

o = "abc"; show( o );
o = java.lang.System.out; show( o ); }}

Protokoll
class java.lang.String
class java.io.PrintStream
Main.java

public final class Main
{ public static void main( final java.lang.String[] args )
{ final java.io.PrintStream out = java.lang.System.out;

final java.lang.CharSequence s = "def"; out.println( s );
final java.lang.Object o = s; out.println( o );
out.println( o == s );
out.println( o.getClass() == s.getClass() ); }}

Protokoll
def
def
true
true

Das „doppelte“ Typsystem

Java  hat ein „doppeltes“ Typsystem, in dem sowohl Ausdrücke  als auch Objekte  einen Typ haben.

Für die objektorientierte Programmierung wäre eigentlich ein einfaches Typsystem  ausreichend, bei dem nur die Objekte einen Typ haben.

Die Typen von Ausdrücken erlauben es in Java, bestimmte Fehler in einem Programm schon beim Übersetzen  zu erkennen. Dadurch kann es verhindert werden, daß einige dieser Fehler erst bei der Ausführung eines bestimmten Programmteils auftreten (zu einem Zeitpunkt, zu dem das Programm möglicherweise schon längere Zeit bei einem Kunden im Einsatz ist). Wegen dieser sogenannten „statischen Typsicherheit“ ist Java  bei einigen Unternehmen beliebt. Andererseits führt das doppelte Typssystem zu längerem Quelltext und meldet manchmal Fehler, die ohne dieses doppelte Typsystem gar keine Fehler wären. Es macht die Sprache auch komplizierter und erschwert dadurch das Erlernen.

Der Compiler sieht nur die Typen von Ausdrücken, nicht die Typen von Objekten.

Wiederholung von Regeln in Zusammenhang mit Typen

String-Regel Ein Zeichenfolgenliteral  hat den Typ »java.lang.String«. Sein Wert ist ein Objekt, das ebenfalls  den Typ »java.lang.String« hat.

Übungsfragen

?   Übungsfrage

Welchen Typ hat der Ausdruck »s« in den runden Klammern des folgenden Blocks?

Welchen Typ hat das Objekt »s« in den runden Klammern des folgenden Blocks? („Das Objekt »s«“ ist dasjenige Objekt, welches der Wert des Ausdrucks »s« ist.)

Quelltext
{ final java.lang.Object s = "abc"; java.lang.System.out.println( s ); }

Übungsfragen

?   Übungsfrage

Welche Ausgabe erzeugt das folgende Programm?

Main.java

public final class Main
{

public static void method( final java.lang.Object o )
{ java.lang.System.out.println( o.getClass() ); }

public static void method( final java.io.OutputStream os )
{ java.lang.System.out.println( os.getClass() ); }

public static void method( final java.io.FilterOutputStream fos )
{ java.lang.System.out.println( fos.getClass() ); }

public static void method( final java.io.PrintStream ps )
{ java.lang.System.out.println( ps.getClass() ); }

public static void main( final java.lang.String[] args )
{ final java.io.PrintStream printStream = java.lang.System.out;
final java.io.FilterOutputStream filterOutputStream = java.lang.System.out;
final java.io.OutputStream outputStream = java.lang.System.out;
final java.lang.Object object = java.lang.System.out;
method( object );
method( filterOutputStream ); }}

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724200 stefan_ram:724200 Der Typ eines Objekts in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724200, slrprddef724200, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/objekttyp_java