---
title: "IF-satsen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/126899-if-satsen"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "westman"
published: "2005-04-22T11:31:17.000Z"
updated: "2005-06-17T21:52:56.000Z"
replies: 5
views: 526
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/126899-if-satsen"
---

# IF-satsen

## #1 — westman, 2005-04-22T11:31Z

Rätt ny vad gäller JAVA.

Antag att s1 och s2 är två strängar (deklarerade som String s1, s2). Jag har hört att man då **inte** bör använda detta: if(s1 =  = s2) för att ta reda på ifall de är lika. Varför inte? Det har fungerat bra för mig...

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

## #2 — Aleph_One, 2005-04-22T14:43Z

Prova dom här raderna så ser du att det inte fungerar

```
String s = "foo";
String t = "f";
t += "oo";

System.out.println("s value: " + s);
System.out.println("t value: " + t);

System.out.println(s == t);
```

Använder du == så testas bara om det är samma objekt, inte värde.
Tänk mer objektorienterat och se String mer som ett objekt som vilket som helst egentligen där man kan använda equals metoden för att jämföra om 2 objekt har samma värde.

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

## #3 — westman, 2005-04-22T16:51Z

På något sätt så kuggade det inte riktigt i knoppen på mig, men nu när du säger det så låter det ju så självklart...

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

## #4 — Lime, 2005-04-25T07:02Z

Faktum är att om man gör som Aleph_One skriver så blir s==t falskt men om man istället gör:

```
String s = "foo";
String t = "foo";

System.out.println(s == t);
```

så blir det sant.

Orsaken är att kompilatorn gör om och optimerar så att det egentligen står:

```
String s, t = "foo";

System.out.println(s == t);
```

dock bör strängar alltid kontrolleras med String.equals(Object o).

Endast atomära värden (int, boolean, char o.s.v.) får jämföras med ==.

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

## #5 — Sam82, 2005-05-03T09:55Z

du kan ju också köra med equals metoden
if(s1.equals(s2)) 
eller vice versa.

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

## #6 — Broms, 2005-06-17T21:52Z

Metoden som Sam82 skrev är klart att föredra!

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

---

Tråden på webben: https://www.webforum.nu/amne/java/126899-if-satsen
