Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Original geschrieben von squeaker
eine Variable ist nur ein reservierter Speicherbereich in den man schreiben kann. Wieviele Pointer-Zugriffe auf dem Weg dorthin stehen ist irrelevant. Und du wirst mir doch nicht sagen wollen, dass öffentliche Klassenvariablen nicht im Speicher stehen, oder?
If a field is declared static, there exists exactly one incarnation of the field, no matter how many instances (possibly zero) of the class may eventually be created. A static field, sometimes called a class variable, is incarnated when the class is initialized (§12.4).
A field that is not declared static (sometimes called a non-static field) is called an instance variable. Whenever a new instance of a class is created, a new variable associated with that instance is created for every instance variable declared in that class or any of its superclasses. The example program:
prints:Code:class Point { int x, y, useCount; Point(int x, int y) { this.x = x; this.y = y; } final static Point origin = new Point(0, 0); } class Test { public static void main(String[] args) { Point p = new Point(1,1); Point q = new Point(2,2); p.x = 3; p.y = 3; p.useCount++; p.origin.useCount++; System.out.println("(" + q.x + "," + q.y + ")"); System.out.println(q.useCount); System.out.println(q.origin == Point.origin); System.out.println(q.origin.useCount); } }
(2,2)
0
true
1
showing that changing the fields x, y, and useCount of p does not affect the fields of q, because these fields are instance variables in distinct objects. In this example, the class variable origin of the class Point is referenced both using the class name as a qualifier, in Point.origin, and using variables of the class type in field access expressions (§15.11), as in p.origin and q.origin. These two ways of accessing the origin class variable access the same object, evidenced by the fact that the value of the reference equality expression (§15.21.3):
q.origin==Point.origin
is true. Further evidence is that the incrementation:
p.origin.useCount++;
causes the value of q.origin.useCount to be 1; this is so because p.origin and q.origin refer to the same variable.
/* ConvDemo1.c */
#include <stdio.h>
int current_month;
/* current month as a value 1-12 */
int main()
{
current_month = 9;
printf("current month = %d\n", current_month);
return 0;
}
squeaker hat gesagt.:Wir werden uns da nie einigen - für mich kommt es auf den Effekt drauf an. Sprich ein Sprachkonstrukt ist für mich sozusagen wie ein Baustein. Wenn es sich verhält wie ein anderer Baustein, sind sie für mich äquivalent. Dies ist bei globalen Variablen in C und statischen Klassenvariablen in Java der Fall.
Ich halte so oder so den Ausdruck finale Werte für besser. Da aber die eigenschafft konstant zu sein, nicht an einen bestimmten Typ von Variable gebunden ist, kommen wir dem ziemlich nahe das ich den Begriff so akzeptieren kann. Jedoch spricht allein beim Ausdruck Globale Variable ein grosser Fehler hervor. Und zwar jener das es eine Klassenvariable istAber dann dürftest du nicht von Konstanten in Java reden. Dies sind nämlich eigentlich Variablendeklarationen mit anschliessender Definition die durch den Modifier final vor dem Überschreiben geschützt sind.
Damit sind sie normale Variablen mit Modifier, verhalten sich aber wie Konstanten. Ich kann sie einwandfrei und guten Gewissens so nennen - und was ist mit dir?
Original geschrieben von squeaker
ich war nicht der erste der von globalen Variablen gesprochen hat - ich war blos der einzige der ihn verstanden hat.
ADA&QS hat gesagt.:Es geht ja schon los beim Begriff Variable, den dieser Begriff stammt von den von den Neumann sprachen ( C ADA85 Modula) .
In reinen OOP Sprachen sollte man eher von Klassen, Instanz, Felder oder Attribute sprechen.
Es gibt Klasse in den Felder defniniert werden.
Von einer Klasse gibt es eine Instanz, diese besitzt Attribute entsprechend der Felder der Klasse.
Es gibt leider keine allgemein gultige Taxonomie der OOP, so das nicht sagen kann deine sematische Deutunge eines Begriff ist falsch.
Wobei statiche Attribute und globale Variablen ja gegen das gleiche SE-Prinzip Information Hidding verstossen.Deshalb wurden diese in diessem Kontext als gleichwertige betracht.
public class Constants {
public static class Session {
public static final String USER = "myproj.session.user";
}
public static class Querys {
public static final String GET_USER = "insert into foo values (?,?,?)";
}
/// irgendwo:
request.getSession().getAttribute(Constants.Session.USER);
bzw
PreparedStatement stm = new PreparedStatement(Constants.Querys.GET_USER);