/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Global variabel
Fra : Thomas Sejr Jensen


Dato : 15-06-01 19:05

Er der en der kan forklare hvad en global variabel helt præcist er??
Jeg mener både at have hørt, at sådanne slet ikke findes i Java og at static
variabler er globale.
Hvad i C++? Er det der bare en variabel, som ikke er member i nogen klasse?
På forhånd tak!

---------------------------------------------
Thomas Sejr Jensen
Thomassj@worldonline.dk
www.worldonline.dk/~thomassj
---------------------------------------------



 
 
Soren 'Disky' Reinke (15-06-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 15-06-01 20:46


"Thomas Sejr Jensen" <thomassj@worldonline.dk> skrev i en meddelelse
news:C7sW6.1668$hi6.200254@news000.worldonline.dk...
> Er der en der kan forklare hvad en global variabel helt præcist er??
> Jeg mener både at have hørt, at sådanne slet ikke findes i Java og at
static
> variabler er globale.

Hvis du tænker på global som værende en variable der kan tilgåes fra hele
dit program (mere end 1 klasse) så findes det ikke.

Men du kan godt lave en variable som er 'global' for 1 klasse, og dens
arvinger.

En static variabel er ikke global mere end end ikke static er. En statisk
variable hænger på selve klassen og ikke en instans af klassen

> Hvad i C++? Er det der bare en variabel, som ikke er member i nogen
klasse?
??

--
With many Thanks

Soren ' Disky ' Reinke ICQ #1413069 http://www.disky-design.dk/fishj
Remove IHSYD from email address when replying by email





Ulrik Magnusson (15-06-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 15-06-01 23:35

Soren 'Disky' Reinke wrote:

> "Thomas Sejr Jensen" <thomassj@worldonline.dk> skrev i en meddelelse
> news:C7sW6.1668$hi6.200254@news000.worldonline.dk...
> > Er der en der kan forklare hvad en global variabel helt præcist er??
> > Jeg mener både at have hørt, at sådanne slet ikke findes i Java og at
> static variabler er globale.
>
> Hvis du tænker på global som værende en variable der kan tilgåes fra hele
> dit program (mere end 1 klasse) så findes det ikke.

Det forstår jeg ikke - en public static er vel global:

package a;
class A
{
public static int var = 42;
}

package b;
class B
{
B()
{
System.out.println( a.A.var );
}
}

Vil du ikke betegne 'var' i ovenstående som global?

Ulrik Magnusson


Soren 'Disky' Reinke (15-06-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 15-06-01 23:47

>
> Det forstår jeg ikke - en public static er vel global:
>
> package a;
> class A
> {
> public static int var = 42;
> }
>
> package b;
> class B
> {
> B()
> {
> System.out.println( a.A.var );
> }
> }
>
> Vil du ikke betegne 'var' i ovenstående som global?

Egentligt ikke,

Du skal jo fortælle hvilken klasse den tilhører for at kunne bruge den, og
så er den jo egentligt ikke en del af hele programmet men af klassen A.
Men det er jo nok mest religion/smag og behag.

Jeg mener ihvertefalde ikke den er global på samme måde som en variable
defineret uden for metoder er i et C program.

--
With many Thanks

Soren ' Disky ' Reinke ICQ #1413069 http://www.disky-design.dk/fishj
Remove IHSYD from email address when replying by email





Flemming K. Jensen (15-06-2001)
Kommentar
Fra : Flemming K. Jensen


Dato : 15-06-01 23:53

On Sat, 16 Jun 2001 00:46:37 +0200, "Soren 'Disky' Reinke"
<disky@disky-design.ihsyd.dk> wrote:

>>
>> Det forstår jeg ikke - en public static er vel global:
>>
>> package a;
>> class A
>> {
>> public static int var = 42;
>> }
>>
>> package b;
>> class B
>> {
>> B()
>> {
>> System.out.println( a.A.var );
>> }
>> }
>>
>> Vil du ikke betegne 'var' i ovenstående som global?
>
>Egentligt ikke,
>
>Du skal jo fortælle hvilken klasse den tilhører for at kunne bruge den, og
>så er den jo egentligt ikke en del af hele programmet men af klassen A.
>Men det er jo nok mest religion/smag og behag.

Det er fordi du fortolker det du læser - det skal du ikke. Den globale
variabel hedder ikke "var", den hedder "a.A.var"

>Jeg mener ihvertefalde ikke den er global på samme måde som en variable
>defineret uden for metoder er i et C program.
>
>--
>With many Thanks
>
>Soren ' Disky ' Reinke ICQ #1413069 http://www.disky-design.dk/fishj
>Remove IHSYD from email address when replying by email
>
>
>
>


Ulrik Magnusson (16-06-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 16-06-01 00:01

> >Du skal jo fortælle hvilken klasse den tilhører for at kunne bruge den, og
> >så er den jo egentligt ikke en del af hele programmet men af klassen A.
> >Men det er jo nok mest religion/smag og behag.
>
> Det er fordi du fortolker det du læser - det skal du ikke. Den globale
> variabel hedder ikke "var", den hedder "a.A.var"

Ok, jeg giver mig - "var"s tilstedeværelse afhænger af at klassen A er
til stede (men det lugter en smule mere af syntaks end mening..).

Ulrik Magnusson


Soren 'Disky' Reinke (16-06-2001)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 16-06-01 12:59

> Det er fordi du fortolker det du læser - det skal du ikke. Den globale
> variabel hedder ikke "var", den hedder "a.A.var"

Jamen så er den jo heller ikke global på den måde at den er en variabel for
hele applikationen, men en variabel for en bestemt klasse, at den så kan
tilgåes fra hele programmet er noget andet. Jeg mener stadigvæk ikke den er
global på samme måde som globale variabler i et C program. Men nu er vi vist
på vej ud i fortolkningens dyb.


--
With many Thanks

Soren ' Disky ' Reinke ICQ #1413069 http://www.disky-design.dk/fishj
Remove IHSYD from email address when replying by email





Niels Ull Harremoës (16-06-2001)
Kommentar
Fra : Niels Ull Harremoës


Dato : 16-06-01 14:20


"Soren 'Disky' Reinke" <disky@disky-design.ihsyd.dk> skrev i en meddelelse
news:9gfhi6$k6l$1@news.inet.tele.dk...
> Men nu er vi vist på vej ud i fortolkningens dyb.

Jeps. Svaret kommer jo an på hvad vi mener med "global".
Java har ikke globale variable i syntaxen - men man kan lave public static
variable
der har omtrent samme semantik som globale variable i andre sprog.

Niels Harremoës




Flemming K. Jensen (15-06-2001)
Kommentar
Fra : Flemming K. Jensen


Dato : 15-06-01 23:49


Formelt er der ikke globale variable i Java, men det er i praksis
muligt at lave variable, der reelt er det alligevel.

F.eks.:

public class Global {
public static int x=5;
}

public class Main {
public static void main( String[] argv ) {
System.out.println( Global.x );
Global.x=8;
System.out.println( Global.x );
}
}

Output:
5
8

Det eneste rigtig interessante ved det, er at skaberne af Java med den
ene hånd fjerner de globale variable, mens de med den anden hånd
indfører static - men sådan er der så meget


/Flemming Jensen


On Fri, 15 Jun 2001 21:46:16 +0200, "Soren 'Disky' Reinke"
<disky@disky-design.ihsyd.dk> wrote:

>
>"Thomas Sejr Jensen" <thomassj@worldonline.dk> skrev i en meddelelse
>news:C7sW6.1668$hi6.200254@news000.worldonline.dk...
>> Er der en der kan forklare hvad en global variabel helt præcist er??
>> Jeg mener både at have hørt, at sådanne slet ikke findes i Java og at
>static
>> variabler er globale.
>
>Hvis du tænker på global som værende en variable der kan tilgåes fra hele
>dit program (mere end 1 klasse) så findes det ikke.
>
>Men du kan godt lave en variable som er 'global' for 1 klasse, og dens
>arvinger.
>
>En static variabel er ikke global mere end end ikke static er. En statisk
>variable hænger på selve klassen og ikke en instans af klassen
>
>> Hvad i C++? Er det der bare en variabel, som ikke er member i nogen
>klasse?
>??
>
>--
>With many Thanks
>
>Soren ' Disky ' Reinke ICQ #1413069 http://www.disky-design.dk/fishj
>Remove IHSYD from email address when replying by email
>
>
>
>


Bertel Lund Hansen (15-06-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-01 23:29

Thomas Sejr Jensen skrev:

>Er der en der kan forklare hvad en global variabel helt præcist er?

En variabel der kan aflæses og/eller ændres direkte overalt i et
program.

>Jeg mener både at have hørt, at sådanne slet ikke findes i Java og at static
>variabler er globale.

Static betyder at noget oprettes på kompileringstidspunktet og er
klar til brug med det vuns; modsat dynamisk der oprettes under
kørslen på bestilling.

Jeg vil råde dig til ikke at bruge ret meget energi på at forske
i globale variable. I før-OOP-sprog kan man let lave globale
variable, og det sparer som regel lidt tid (meget lidt). Til
gengæld aner man ikke rigtig hvilken status de har fordi
funktionerne roder med dem uafhængigt af hinanden. Det er en
fejlkilde (skrevet af én der æælsker globale variable, men det er
en anden (vane)sag).

Jeg kan ikke huske om man i Java kan lave nogle krumspring så man
får globale variable.

>Hvad i C++?

C++ kombinerer egenskaberne fra et før-OOP-sprog (C) med OOP, så
det kan lidt af hvert. Man kan godt lave globale variable deri.

>Er det der bare en variabel, som ikke er member i nogen klasse?

Det er ikke helt forkert, men heller ikke helt rigtigt. Det
væsentlige er 'hvem' der kan tilgå dem, ikke så meget deres
tilhørsforhold.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Ulrik Magnusson (15-06-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 15-06-01 23:45

Bertel Lund Hansen wrote:

> Static betyder at noget oprettes på kompileringstidspunktet og er
> klar til brug med det vuns; modsat dynamisk der oprettes under
> kørslen på bestilling.

Det er faktisk ikke helt korrekt - static variabler konstrueres første
gang en klassedefinition "loades" og forbliver de samme uanset
antallet af instanser der laves. Der er altså stadig en bunke runtime
i Javas static (vel sagtens pga. dynamisk klasse "loadning"). Det er
kompileren som nogle gange ser, at den kan definere variablen
endeligt på oversættelsestidspunktet (fx ved reference til final static
metoder/variabler) og optimerer.

Ulrik Magnusson


Ulrik Magnusson (16-06-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 16-06-01 10:51



Ulrik Magnusson wrote:

> Bertel Lund Hansen wrote:
>
> > Static betyder at noget oprettes på kompileringstidspunktet og er
> > klar til brug med det vuns; modsat dynamisk der oprettes under
> > kørslen på bestilling.

> Det er
> kompileren som nogle gange ser, at den kan definere variablen
> endeligt på oversættelsestidspunktet (fx ved reference til final static
> metoder/variabler) og optimerer.

Og det er da i øvrigt noget vrøvl - nu blander jeg variablens værdi
ind i det. Alle variabler oprettes dynamisk i Java - og static forbliver
de samme under hver kørsel - men ikke for forskellige kørsler.

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste