2013-04-27 10 views

Antwort

6

veränderbar vorschlagen, was sich ändern kann, d.h.ein int

int a = 0; 
System.out.prtinln(a); //prints 0 
a = 2; 
System.out.prtinln(a); //now prints 2, so its mutable 

In Java ist eine Zeichenfolge unveränderlich. Sie können den Zeichenfolgenwert nicht nur in seiner Referenz ändern.

String s1 = "Hello"; 
System.out.println(s1); //prints Hello 
String s2 = s1; 
s1 = "Hi"; 
System.out.println(s2); //prints "Hello" and not "Hi" 

Status ist etwas, das eine Instanz einer Klasse haben wird (ein Objekt).

Wenn ein Objekt bestimmte Werte für seine Attribute hat seine in einem diffrent Zustand dann ein anderes Objekt der gleichen Klasse mit diffrent Attributwerte

+0

Jeder kann es besser erklären? o.O. –

1

angenommen int i = 5;

nun der Zustand der Variable i ist, dass jetzt hat es enthaltene Wert 5.

Jetzt nehme ich habe i = 7 eingestellt;

nun der Zustand der Variablen i ist, dass es jetzt hat 7 enthaltenen Wert, es ersetzt in Wert 5.

wenn Änderung ist möglich, hat dann wird es als-wandelbar genannt, das bedeutet können wir ändern hier angeben.

Wenn eine Wertänderung nicht möglich ist, wird sie als unveränderlich bezeichnet.

+0

Und darauf aufbauend basiert der Zustand eines Objekts auf dem Zustand aller seiner Felder. Wenn eines der Felder eines Objekts den Status ändert, ändert sich der Objektstatus. Wenn die Felder ** eines Objekts ** den Status ändern können, wird das Objekt als veränderbar betrachtet. Wenn die Felder eines Objekts den Status nicht ändern können (nachdem das Objekt erstellt wurde), wird es als unveränderlich betrachtet. –

6

Status bezieht sich kollektiv auf die im Objekt gespeicherten Daten, die die aktuellen Eigenschaften des Objekts bestimmen. Wenn Sie beispielsweise ein BankAccount Objekt haben, stellt der Besitzer des Kontos und der darin enthaltene Geldbetrag den Status des Kontos dar.

jedoch nicht alle Zustand für die funktionale Programmierung schlecht ist, nur die wandelbar+ ist nicht akzeptabel. Zum Beispiel sind die Zeichen, aus denen eine Zeichenfolge besteht, der Zustand dieser Zeichenfolge. Wenn Sie den Inhalt der Zeichenfolge nicht ändern können, heißt es, dass es einen unveränderlichen Status hat. Dies passt gut zum funktionalen Programmierparadigma. +veränderbar ist ein schickes Wort für "veränderbar".

+1

Was Sie "nicht veränderbarer Zustand" nennen, würde ich "Wert" nennen. – NovaDenizen

2

Ein klassisches Beispiel für ein unveränderliches Objekt ist eine Instanz der Java String-Klasse.

String s = “ABC”; 

s.toLowerCase(); 

System.out.println(s); 

Output = ABC

Dies liegt daran, s Referenzierung seine unveränderlichen String weiter. Wenn Sie s mutieren wollen, ist ein anderer Ansatz erforderlich:

s = s.toLowerCase(); 

Dies wird eine neue Referenz erstellen. Jetzt referenziert der String s ein neues String-Objekt, das "abc" enthält.

3

Mutable Zustand alles ist, die eine Funktion zurückgeben einen anderen Wert machen, obwohl es sich als mit den gleichen Argumenten aufgerufen.

Einfaches Beispiel in Java:

public static double badSqrt(double x) { 
    double r = Math.sqrt(x); 
    if (System.currentTimeMillis() % 42L == 0L) return r; 
    return r + 0.000000001; 
} 

Diese Funktion berechnet ein etwas manchmal falsches Ergebnis. Wir sagen, dass badSqrt unrein ist, weil sein Ergebnis nicht nur von seinem Argument (und seinen Konstanten) abhängt.

Für die Person, die ein Programm debuggt, das Aufrufe an badSqrt() oder unreine Funktionen im Allgemeinen enthält, ist dies ein Albtraum. Oft scheint das Programm zu funktionieren, aber ab und zu werden falsche Ergebnisse geliefert. Wenn die Funktion nicht eindeutig dokumentiert ist oder der Quellcode verfügbar ist, ist es schwierig, den Fehler zu verfolgen.

In solchen Fällen wird gesagt, dass das Verhalten der Funktionen vom veränderlichen Zustand abhängt. Dies ist ein Zustand, der durch völlig unabhängige Teile des Programms oder (wie in dem Beispiel) durch ein anderes Programm (das Betriebssystem) geändert (mutiert) werden könnte.

Verwandte Themen