---
title: "få ut variabeln ur if-sats/for loop osv"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/109043-få-ut-variabeln-ur-if-sats-for-loop-osv"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "kobranturre"
published: "2004-08-12T14:56:43.000Z"
updated: "2004-08-16T15:58:34.000Z"
replies: 10
views: 410
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/109043-få-ut-variabeln-ur-if-sats-for-loop-osv"
---

# få ut variabeln ur if-sats/for loop osv

## #1 — kobranturre, 2004-08-12T14:56Z

```php
<?php
$i = 2;
if ($i == 2){
$h = 3;
}
echo $h;
?>
```

Detta skulle ge utskriften 3.

men om jag använder java

```
int i = 2;

if (i == 2){
int h = 3;
}

System.out.println(h);
```

Detta skulle ge en error. Rätt kod är istället 

```
int i = 2;

if (i == 2){
int h = 3;
System.out.println(h);
}
```

Men ibland så behöver/måste utskriften vara utanför if eller foor loppen eller what ever. Finns det ngt sätt o fixa det?

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

## #2 — Mc Fetto, 2004-08-12T15:05Z

```
int i = 2;
int h = 0;
if (i == 2){
    h = 3;
}
System.out.println(h);
```

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

## #3 — Viktor, 2004-08-12T19:13Z

En deklaration i Java är bara giltig (finns bara) innom samma scope (och sub scope) där den är deklarerad.
Ett scope kan man enkelt säga är det kod område som börjar med en { och slutar med }.

```
public class ScopeTest
{
	private int val1=0;
	public static void main(String[] argv)
	{
		int val2=10;
		for(int val3=0;val3<10;val3++)
		{
			System.out.println(val1+", "+val2+","+val3);
		}
		System.out.println(val1+", "+val2);
		printVal1();
	}
	
	private void printVal1()
	{
		System.out.println(val1);
	}
}
```

Val1 är altså en global variabel för denna klass.
Val2 gäller för hela funktionen main.
Val3 gäller bara i for lopen.

/Viktor

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

## #4 — kobranturre, 2004-08-13T08:46Z

visste inte att man kunde ha så där (val1).

Det är en sak jag inte fattar. Exakt vad gör/säger/betyder

```
public static void main(String[] args){
```

?

(du skrev argv....var det ett litet slarvmisstag eller finns den också?)

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

## #5 — Lime, 2004-08-16T07:09Z

> **kobranturre skrev:**
>
> visste inte att man kunde ha så där (val1).
> 
> Det är en sak jag inte fattar. Exakt vad gör/säger/betyder
> 
>
>
> ```
> public static void main(String[] args){
> ```
>
> 
> 
> ?
> 
> 
> (du skrev argv....var det ett litet slarvmisstag eller finns den också?)

För att svara på den sista frågan först.... Det spelar ingen roll vad man kallar sjävla argumentarrayen. Det är bara ett namn och även om jag skriver *public String metod(String a)* eller *public String metod(String b)* så har metoderna samma signatur och är alltså samma metod trots att namnet på variabeln är olika.

Vad *public static void main(String\[\] args)* gör är följande:

När du startar ett javaprogram så söker JVM:en efter en metod med just signaturen *public static void main(String\[\] args)* för att se vad den skall göra. Eftersom metoden är statisk så behöver man inte göra någon instans av klassen utan kan föra från start.

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

## #6 — aasah, 2004-08-16T11:27Z

> **kobranturre skrev:**
>
> ... Det är en sak jag inte fattar. Exakt vad gör/säger/betyder
>
>
> ```
> public static void main(String[] args){
> ```
>
> ?
> ...

Förtydligande till Limes beskrivning:

En klass (Aklass) som ska kunna köras med: java Aklass 
måste ha en public metod som heter main, är static och void och tar som indata en String-array. Däremot är String-arrayen ett argument vilket som helst, så vad det heter bestämmer du. När jag har en mainmetod som inte är avsedd att ta argument brukar jag definiera den så här:

```
public static void main (String[] notUsed) {....}
```

Det funkar hur bra som helst.

public \- den syns och kan anropas utanför klassen, dvs av vilken klass som helst och (i fallet med main) även från kommandoraden.

static \- det är en klassmetod och inte en instansmetod. (Vilket kortfattat uttryckt innebär att varje instans av Aklass kommer att använda **samma** metod och du behöver inte ens en instans för att anropa den.) 
*Exempel:* Det är en static metod i Integer som används när du gör om en String som "2" till heltalet 2 mha Integer.parseInt("2"). Då har du ingen specifik Integer, bara själva klassen.

void \- returnerar ingenting.

Exempel på vad den där String-arrayen gör:

```
public class Aklass {

  public static void main(String[] args) {
     if (args.length == 0) System.out.println("No args used!");
     else System.out.print(args.length + " args used! ");
     if (args.length == 5) System.out.println(args[4]);
  }

}
```

java Aklass ==\> No args used!
java Aklass OK? ==\> 1 args used!
java Aklass Flera arg kommer efter varann ==\> 5 args used! varann

\-------
Brasklapp: Har för mig att man kollar längden på en array med length(). Kan ev heta något annat, det var ett tag sedan jag gjorde det. Men det finns en sån metod som kollar det.

RED: Exemplet - men inte brasklappen - redigerat med anledningen av rättelsen nedan. Lämnade brasklappen för kontinuitetens skull.

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

## #7 — spango, 2004-08-16T11:47Z

Nej, det är ett fält och inte en metod, d.v.s.  args.length och inte args.length() :)

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

## #8 — kobranturre, 2004-08-16T11:54Z

kan väl ställa frågan på en redan befintlig tråd :) 

Jag läser just nu Thinking in Java (pdf) där han bratar mycket om java 1.0 och 1.1. Så jag gissar att bokenb är väldigt gammal då jag har 1.4

Så har ni några boktips? Helst svenska :)

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

## #9 — aasah, 2004-08-16T12:21Z

> **spango skrev:**
>
> Nej, det är ett fält och inte en metod, d.v.s.  args.length och inte args.length() :)

Tack, spango! :D

Jag har redigerat exemplet - men inte brasklappen - i inlägget. Lämnade brasklappen för kontinuitetens skull.

kobrantkurre - Jag tror inte att det är någon bra idé att läsa i en bok om så tidiga versioner. Har för mig att någon större förändring genomfördes någongång mellan  **1\.1.x och 1.2.1**

RED: Skrivfel av olämpligt slag!

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

## #10 — kobranturre, 2004-08-16T12:59Z

2\.1? Visste inte ens att den fanns

jag kör

J2SE 1.4.2 SDK. Bör jag byta till ngn annan?

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

## #11 — spango, 2004-08-16T15:58Z

1\.4.\* är den senaste stabila JSDK:n, det finns en beta för 1.5 ute också, men den innefattar en del nyheter som kanske kan krångla till det lite. Kör med 1.4, Java 2 börjar räknas från JSDK \>=1.2...

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

---

Tråden på webben: https://www.webforum.nu/amne/java/109043-få-ut-variabeln-ur-if-sats-for-loop-osv
