---
title: "\";;\" Vad betyder detta??"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/52341-vad-betyder-detta"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "swange"
published: "2002-09-05T21:17:35.000Z"
updated: "2002-09-09T15:02:22.000Z"
replies: 18
views: 504
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/52341-vad-betyder-detta"
---

# ";;" Vad betyder detta??

## #1 — swange, 2002-09-05T21:17Z

Någon som vet vad 2 ;; betyder i Java. Ex:

For (;;) {
bla...
bla...
bla...

Tacksam för svar....

// Stefan

Permalänk: https://www.webforum.nu/p/52341

## #2 — Brimba, 2002-09-05T21:28Z

; är satsavgränsare.

Man kan skriva ett helt program på en rad, men för att göra det lite enklare att läsa brukar man dela upp det på lite fler rader.

Permalänk: https://www.webforum.nu/p/773166

## #3 — swange, 2002-09-05T21:30Z

Jo, visst, Det är en satsavgränsare men det verkar som om man kan använda två stycken på rad i en forloop (;;), och då blir det någon slags operator eller Statement??

Eller?

Permalänk: https://www.webforum.nu/p/773169

## #4 — Marcus E, 2002-09-05T21:37Z

Nej, for-loopen tar tre satser.
for(start statement; test statement; increase statement)

Du kan utelämna något av dessa, men du kan inte utlämna sats-avgränsarna. Därför är det godkänt, men inte rekommenderat, att använda for(;;).

Detta gäller för samtliga C-liknande språk (Java, C, C++, PHP etc.).

Permalänk: https://www.webforum.nu/p/773175

## #5 — swange, 2002-09-05T21:42Z

Så med andra ord så kommer denna forloop bara köra och köra??!!

Permalänk: https://www.webforum.nu/p/773181

## #6 — Marcus E, 2002-09-05T21:42Z

Japp, precis som while(true).

Permalänk: https://www.webforum.nu/p/773182

## #7 — swange, 2002-09-05T22:17Z

Ok, tackar för hjälpen...

// Stefan

Permalänk: https://www.webforum.nu/p/773198

## #8 — spango, 2002-09-07T10:57Z

> **swange skrev:**
>
> Så med andra ord så kommer denna forloop bara köra och köra??!!

Fotnot: Ibland är det praktiskt att ha sådana loopar som man i stället avbryter med break. Så den \_behöver\_ inte snurra på för evigt.

Permalänk: https://www.webforum.nu/p/777261

## #9 — Brimba, 2002-09-07T15:35Z

spango, när är det bättre att köra en for(;;) iställer för en 

boolean bolCheck = true;
while(bolCheck)
...

Permalänk: https://www.webforum.nu/p/777520

## #10 — SPiN, 2002-09-07T15:46Z

Eftersom att båda är loopar som rullar ända tills man manuellt avbryter dem ( Med break eller return ), så bör det inte vara någon skillnad på dem. Därmot kan du ju med for-loopen deklarera variabler som bara finns inom loopen ( I init-delen av for ) - och sedan tas bort efter loopen är klar.

```
for( String str = "SPiN"; ; ) {
     System.out.println( str );

     if( LALA == 1 )
          break;
}
```

Strängen str kommer efter att loopen avbrutits att tömmas från minnet. Tror jag, åtminstone - eftersom att den är en lokal variabel, som endast kan användas inom for-blocket.

Permalänk: https://www.webforum.nu/p/777531

## #11 — spango, 2002-09-07T18:50Z

> **Brimba skrev:**
>
> spango, när är det bättre att köra en for(;;) iställer för en 
> 
> boolean bolCheck = true;
> while(bolCheck)
> ...

Well... en del menar att det *aldrig* är bättre. Men ett exempel skulle kunna vara om det inte är helt praktiskt, logiskt eller snyggt att avbryta mellan två iterationer, ungefär så här:

```
FooServer server = new FooServer();
// Rulla på i all evighet och hämta in förfrågningar
for (;;){
    try {
        FooRequest request = server.fetchRequest();
        request.makeItHappen();
        request.finish();
        addLogEntry("Request served successfully: " + request);
    } catch (FatalFooBarException e){
        // rapportera fel, sluta snurra
        addLogEntry("PEBKAC error: " + e);
        break;
    }
}
```

Man kan ju förstås skriva om det så att man slipper break, men personligen tycker jag att det är krångligare att läsa:

```
FooServer server = new FooServer();
boolean everythingIsOk = true;
// Rulla på i all evighet och hämta in förfrågningar
while (everythingIsOk){
    try {
        FooRequest request = server.fetchRequest();
        request.makeItHappen();
        request.finish();
        addLogEntry("Request served successfully: " + request);
    } catch (FatalFooBarException e){
        // rapportera fel, sluta snurra
        addLogEntry("PEBKAC error: " + e);
        everythingIsOk = false; 
    }
}
```

Permalänk: https://www.webforum.nu/p/777641

## #12 — Marcus E, 2002-09-07T18:54Z

Annars kan man kasta om det lite.

```
try {
   for (;;){
        FooRequest request = server.fetchRequest();
        request.makeItHappen();
        request.finish();
        addLogEntry("Request served successfully: " + request);
    }
} catch (FatalFooBarException e){
    // rapportera fel, sluta snurra
    addLogEntry("PEBKAC error: " + e);
}
```

Permalänk: https://www.webforum.nu/p/777643

## #13 — Brimba, 2002-09-08T00:21Z

personligen tycker jag att en forloop som bygger på break borde vara förbjuden ;) 
Att den sedan kan användas och även vara användbar är en helt annan sak, men lösningen i sig borde förbjudas :D

Permalänk: https://www.webforum.nu/p/777852

## #14 — PeW, 2002-09-08T06:41Z

> **Brimba skrev:**
>
> personligen tycker jag att en forloop som bygger på break borde vara förbjuden ;) 
> Att den sedan kan användas och även vara användbar är en helt annan sak, men lösningen i sig borde förbjudas :D

Håller med Brimba  ;)

Finns en längre diskussion om detta [här](http://www.webforum.nu/showthread.php?s=&threadid=48607) ...  
Men OK. Poängen är att man ska *undvika* break i loopar.. och för det mesta går det att bygga programstrukturen på ett renare sätt. Speciellt om man nästlar iterationer och kanske ställer svaga villkor på break. Anledningen är helt enkelt att det lätt blir svårt att avlusa logiska fel i stora programkonstruktioner.

Permalänk: https://www.webforum.nu/p/777874

## #15 — Chainsaw, 2002-09-08T08:27Z

Hittade en liten kodsnutt som innehöll lite programerarhumor för någon dag sedan... Riktigt torrt. Om man tar två sådana här kodstycken och gnuggar mot varandra så kan man göra upp eld med dom. Frystorkade skämt.

```
#define ever ;;
...
for (ever) {
    ...
}
```

Permalänk: https://www.webforum.nu/p/777893

## #16 — spango, 2002-09-08T11:28Z

Barndvarning, Motorgåsen, brandvarning. ;) 

För övrigt håller jag med Brimba. Man ska naturligtvis använda while (true) i stället!

Permalänk: https://www.webforum.nu/p/778037

## #17 — Jaar, 2002-09-09T12:38Z

All användning av break och att kasta exceptions där det inte är nödvändigt bör undvikas enligt mig... break och framför allt continue är ju ett steg tillbaka mot GW Basics orginella kod:

```
10 if a > 5 goto 40
20 a = a + 1
30 goto 10
40 a = 100
```

\= dålig programstil :D

Permalänk: https://www.webforum.nu/p/778777

## #18 — Brimba, 2002-09-09T14:10Z

När vi ändå pratar gammal BASIC... låt mig ta en nubbevisa jag hörde härom helgen...

Melodi: Mors lilla olle

10     LET oss nu fatta i våra glas
20     INPUT en klunk utav det som där has
30     IF du fått nog THEN till 50 min vän
40     ELSE GOTO-baka till 10 igen
50     END

Det var bara jag och några andra datanissar som tyckte den var rolig iofs, men men :e

Permalänk: https://www.webforum.nu/p/778853

## #19 — Chainsaw, 2002-09-09T15:02Z

Har sjungit den snapsvisan förut. Tyvärr är det en evighetsloop, och tack vare att den inte har någon som helst felhantering så upptäcker den inte när någon stackars student fått för mycket och däckar. Därför: använd vettig felhantering så minskar vi alkoholrelaterade problem här i samhället.

Permalänk: https://www.webforum.nu/p/778914

---

Tråden på webben: https://www.webforum.nu/amne/java/52341-vad-betyder-detta
