2016-04-25 10 views
0

Ich überprüfte ein Programm, das ich im Internet gefunden habe und ich versuche herauszufinden, wie es funktioniert, aber ich kann nichts über diese Funktion finden, die mir helfen könnte.

public static double regress(double x, ArrayList<Double> terms) { 
    double a = 0.0; 
    int exp = 0; 
    Iterator<Double> i$ = terms.iterator(); 
    while (i$.hasNext()) { 
     double term = i$.next(); 
     a += term * Math.pow(x, exp); 
     ++exp; 
    } 
    return a; 
} 

Ich weiß, dass das Verfahren in einem Arraylist iteriert a Wert zu berechnen, aber was es diese Zeile bedeutet Iterator<Double> i$ = terms.iterator();? Genauer gesagt, wofür wird dieses Symbol $ nach der Variablen i verwendet?

+1

'$' bedeutet nichts Konkretes, nur ein Zeichen in Ihre Variable – Andrew

+0

sein nichts ... sie es für einige eindeutige Identifizierung verwendet wird, kann ... –

+0

warum nicht Sie versuchen, die $ i mit etwas Sinnvolles repalacing. – Priyamal

Antwort

0

i$ ist einfach der Name Ihrer Variablen in der Tat $ ist ein Zeichen, das Sie verwenden können, um den Namen eines Java Identifier zu definieren.Um zu überprüfen, ob ein Zeichen (in einem Java-ID als andere als das erste Zeichen) darf man Character.isJavaIdentifierPart(char) verwenden können, wenn Sie es mit $ testen, werden Sie true erhalten, wie in der Javadoc erwähnt:

Ein Charakter kann Teil einer Java-Kennung, wenn eine der folgenden Bedingungen erfüllt sind:

  • es ist ein Brief

  • es ist ein Währungssymbol (wie {@code '$'})

  • es wird ein Verbindungssatzzeichen (wie {@code '_'})

  • es ist eine Ziffer

  • es ist ein numerischen Brief (wie eine römische Zahl Rolle)

  • es ist eine Marke Kombination

  • es eine nicht-spacing Markierung

  • {@code isIdentifierIgnorable} kehrt {true} @code für das Zeichen

0

Das $ hat keine spezielle Bedeutung. In der von Ihnen erwähnten Zeile wird ein Iterator-Objekt für die Liste Terms erstellt, das dann verwendet wird, um auf alle Elemente davon zuzugreifen. i $ ist nur eine ungerade Wahl für einen Variablennamen.

0

$ ist nur der Teil der Kennung, d. H. Der Name Ihrer Variablen. Sie können nur einige spezielle Symbole als Teil von Bezeichnern verwenden. $ ist einer von ihnen. (Tatsächlich sind alle Währungssymbole erlaubt).

Es hat keine besondere Bedeutung.

Aber eine Stelle, wo es vom Compiler verwendet wird, ist, wenn Sie innere Klassen verwenden. Dann wird der Name der Inner-Klasse mit der Hauptklasse getrennt.
Beispiel: MyClass$InnerClass1.class

0

Das sieht wie Code aus, der von einem Decompiler "geschrieben" wurde. Erwarten Sie nicht, dass dekompilierter Code besonders lesbar ist. Für was es wert ist, wäre ein (menschlicher) Java-Programmierer wahrscheinlich den Code in Ihrer Frage schreiben wie:

public static double regress(double x, ArrayList<Double> terms) { 
    double a = 0.0; 
    int exp = 0; 
    for (double term : terms()) { 
     a += term * Math.pow(x, exp); 
     ++exp; 
    } 
    return a; 
} 

Der $ Charakter ein Rechtscharakter in einem Java-Bezeichner ist, mit der Ausnahme, dass sie informell für die Verwendung reserviert von Compilern, Quellcode-Generatoren und anderen Tools. Von der Verwendung von $ in geschriebenem Code wird dringend abgeraten. Wie JLS 3.8 sagt:

Das $ -Zeichen sollte nur in mechanisch erzeugte Quellcode oder selten auf Legacy-Systemen bereits bestehenden Namen für den Zugriff verwendet werden.

Sie können in Schwierigkeiten geraten, wenn Sie $ unbedacht verwenden. Das Zeichen wird in den synthetischen Namen innerer Klassen und für die synthetischen Variablen verwendet, die verwendet werden, wenn sich eine innere Klasse auf eine "effektiv endgültige" lokale Variable in einem einschließenden Gültigkeitsbereich bezieht. Wenn Sie Ihre eigenen $ Variablen deklarierten, könnten sie mit der Verwendung des Compilers kollidieren, und das Ergebnis wäre undefiniert.

0

A $ ein gültiges Symbol ist in einer Kennung zu verwenden; es bedeutet nichts besonderes.

beziehen sich jedoch auf JLS Section 3.8, was darauf hindeutet, dass $ nicht typischerweise in Kennungen verwendet werden:

Das $ -Zeichen sollte nur in mechanisch erzeugte Quellcode oder selten verwendet werden, vorbestehende Namen für den Zugriff auf auf Legacy-Systemen.