Avatar billede ipkiss_ Nybegynder
28. september 2003 - 11:59 Der er 11 kommentarer og
1 løsning

Tjekke om en variabel er tom eller ikke assigned?

Totaaaalt nemt spørgsmål :)
Avatar billede tosssen Nybegynder
28. september 2003 - 12:12 #1
Det gør java compileren så vidt jeg ved. Du kan ikke bruge en unassigned variabel, fordi compileren ikke tillader det. Du kan på den måde tjekke om den er unassigned ved at prøve at bruge den.
Avatar billede medions Nybegynder
28. september 2003 - 12:32 #2
if (variabel.equals(""))
{
  System.out.println("Variablen var tom!");
}

//>Rune
Avatar billede tosssen Nybegynder
28. september 2003 - 12:56 #3
Rune>> Din koder antager variablen er en String. Det har ipkiss imidlertid ikke sagt noget om. Din koder virker fx ikke hvis variablen er en int.
Avatar billede x-masman Nybegynder
28. september 2003 - 13:03 #4
if (x = NULL)

er det ikke sådan
Avatar billede x-masman Nybegynder
28. september 2003 - 13:04 #5
Jo. man kan da godt lave en unassigned variabel.

int i;

den er da ikke assigned til nogen værdi.
Avatar billede x-masman Nybegynder
28. september 2003 - 13:04 #6
og det er if(x == NULL)
Avatar billede ipkiss_ Nybegynder
28. september 2003 - 13:06 #7
Er det ikke forskelligt hvilke "default" værdier den enkelte variabel type har ? Int har 0 osv?
Avatar billede x-masman Nybegynder
28. september 2003 - 13:11 #8
Nej. de bliver da ikke automatisk initialiseret... mener jeg. Jeg prøver lige.
Avatar billede tosssen Nybegynder
28. september 2003 - 13:33 #9
Det er rigtigt man kan lave en unassigned variabel, men man kan ikke bruge den, som man kan i fx c++, hvor den bare har en tilfældig værdi. I Java brokker compileren sig hvis man prøver at bruge den.
Hvad skal du i øvrigt bruge en unassigned variabel til?
Avatar billede _carsten Nybegynder
28. september 2003 - 17:10 #10
Primitive variabler for altid default værdien '0', undtagen boolean
som får værdien 'false'

Resterende variabler erklæret i en klasse er default 'null' ikke 'NULL'

int i;  // i = 0
String s;  // s = null
Avatar billede arne_v Ekspert
28. september 2003 - 20:32 #11
Der er sagt meget rigtigt i denne tråd, men hvis vi nu lige skal
prøve at samle trådene list:

* klasse members bliver altid initialiseret
* instans members bliver altid initialiseret
* integers/floating point/boolean/objects initialiseres med 0/0.0/false/null
* lokale variable i metoder giver compile fejl hvis man forsøger
  at bruge dem uden at de er initialiseret

Kode eksempel:

public class Init {
    private static int ci;
    private static double cd;
    private static boolean cb;
    private static String cs;
    private int ii;
    private double id;
    private boolean ib;
    private String is;
    public void print() {
      int ai;
      double ad;
      boolean ab;
      String as;
      System.out.println(ci);
      System.out.println(cd);
      System.out.println(cb);
      System.out.println(cs);
      System.out.println(ci);
      System.out.println(id);
      System.out.println(ib);
      System.out.println(is);
      // thise oycommented gives compile errors
      //System.out.println(ai);
      //System.out.println(ad);
      //System.out.println(ab);
      //System.out.println(as);
    }
    private static void main(String[] args) {
        Init test = new Init();
        test.print();
    }
}

som skriver:

0
0.0
false
null
0
0.0
false
null

Det er ikke muligt at teste på om en variabel er initialiseret, fordi
enten er den initaliseret eller så får man en compile fejl.

For object referancer gælder det at de kan være null d.v.s. ikke
pege på et objekt.

Og derfor kan man muligvis tillade sig at kalde en object referance som
er null for "uinitaliseret" selvom det ikke er teknisk korrekt.

Og selvfølgelig kan man teste for om en object referance er null.
Avatar billede ipkiss_ Nybegynder
28. september 2003 - 21:12 #12
Hej alle
Tak til alle og til Arne for det meget opklarende svar :)
Jeg kommer fra webscripting miljøer og der er det meget forskelligt, hvordan en variabel (instance, local, parameter) opfører sig.
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