Avatar billede touel Nybegynder
01. marts 2005 - 23:15 Der er 9 kommentarer og
2 løsninger

Objekter og reference variabler

Hvis jeg nu skriver følgende :

1) Date dato = new Date (); //Er oprettet som en klasse i prog.

  dato.idag (); bla bla bla

2) Date dato = null;

  dato.idag (); bla bla bla

Så vil den nederste løsning selvfølig ikke køre.Der kommer en NullPointerException. Hvornår ved man egentlig hvad man skal bruge hvornår ?
Jeg ved at når man har interface med, så skal der ikke oprettes objekter af dem, men jeg har også set tilfælde hvor man har en almindelig klasse, som der heller ikke bliver lavet objekter af, men hvor der bliver brugt løsning nr. 2 foroven..... Så hvornår bruger man hvad ???
Avatar billede mikkelbm Nybegynder
01. marts 2005 - 23:18 #1
Måske du kan få glæde af denne artikel:

http://www.eksperten.dk/artikler/600

Har dog ikke selv læst den, men den har fået nogle roser med på vejen...
Avatar billede arne_v Ekspert
01. marts 2005 - 23:18 #2
Date dato = new Date ();

sætter en reference til til at pege på et nyt objekt

Date dato = null;

sætter en reference til til at pege ingenting

så hvad du skal bruge afhænger vel af om referencen skal pege på et objekt eller
på ingenting
Avatar billede arne_v Ekspert
01. marts 2005 - 23:19 #3
Den sidste konstruktion giver naturligvis kun mening, hvis dato senere kommer
til at pege på et objekt.
Avatar billede arne_v Ekspert
01. marts 2005 - 23:20 #4
PS: Jeg synes ikke at du skal have en klasse ved navn Date - mange vil tro
    at det er en java.util.Date
Avatar billede touel Nybegynder
02. marts 2005 - 09:45 #5
Det var bare et eks fra min side arne...
Avatar billede kalp Novice
02. marts 2005 - 09:49 #6
Til at suplere den artikel mikkelbm linker til kan du også læse
http://www.eksperten.dk/artikler/608
som følger den lidt. Får du ondt i øjnene af at læse sådan noget på skærmen kan du komme med en email og så sender jeg dig dem da bare der så kan du udprinte dem (ved ikke om man kan på E)

Og angående det du nævner med at der er nogen klasser der ikke skal oprettes objekter af så tænker du måske på Math klassen? Det har egentlig så meget at gøre med objektet i sig selv nødvendigvis men pga. de metoder du kalder i objekted at statiske. En sådan metode kunne ud som følgende..


public static int(int a, int b)
{
return a+b;
}

nu skulle det være muligt at kalde denne metode uden at i en klasse uden at skulle oprette et objekt af den.

Angående dit spørgsmål til denne

Date dato = null;

Jeg prøver lige med at andet eksempel.. fx

String tekst;

Du har lavet denne variabel men ved endnu ikke hvad den skal indeholde.. men lidt efter vil du udskrive den som følgende

System.out.println(tekst);

Det kan du ikke! for den er jo ikke initialiseret så den er altså tom.. hvad er det så du prøver på at udskrive?

Gør du sådan her

String tekst = null;

og

System.out.println(tekst);

så vil den udskrive null.. null anvendes altså her til ikke undgå en compiler fejl
men man anvender null til mange ting for uanset hvilket objekt du leger med så kan det være null hvilket egentlig er meget smart.

Null anvendes tit i metoder der sender et objekt tilbage.. metoden sender derfor enten et objekt tilbage eller null! og så kan du sige at får du null tilbage så fandt du ikke hvad du ville have hvis du får objektet tilbage så gjorde du..
Avatar billede touel Nybegynder
02. marts 2005 - 09:59 #7
når men I må begge smide et svar, da begge gav lige meget mening.... jeg henter så et kniv og deler de 30 pt op ;0)
Avatar billede arne_v Ekspert
02. marts 2005 - 10:03 #8
svar
Avatar billede arne_v Ekspert
02. marts 2005 - 10:04 #9
kalp>

Der mangler vist et metode navn i:

public static int(int a, int b)

Hvis vi snakker instans variable så vil:

String tekst;

String tekst = null;

faktisk gøre det samme. Det er kun ved lokal evariable at man får compile
fejl på den første.
Avatar billede kalp Novice
02. marts 2005 - 10:07 #10
Det gør der i hvertfald:o) sådan går det når man skrive på Eksperten hehe

Angående nummer 2 så ville jeg have skrevet det men testede det lige og der gav den en fejl:/ lavede et program kun med main.. det måske lokalt alligevel fordi main er en "metode"
Avatar billede kalp Novice
02. marts 2005 - 10:08 #11
public static int(int a, int b)

=

public static int ligSammen(int a, int b)

for en god ordensskyld;)

så kan du kalde ligSammen(int a, int b); fra andre klasser
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester