Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele NullPointerException | Merkkijono
Java Perusteet

bookNullPointerException

NPE

NullPointerException eli NPE on virhe, jonka jokainen Java-ohjelmoija tuntee. Tämä virhe on tunnettu ohjelmoijien ärsyttämisestä.

Ensiksi tarkastellaan null-arvon käsitettä merkkijonon muuttujalle. Kun luodaan merkkijonon muuttuja, mutta unohdetaan alustaa se, se saa arvokseen null. Vertailun vuoksi, jos int-muuttujaa ei alusteta, se saa arvon 0.

Tarkastellaan esimerkkiä merkkijonon muuttujasta, jonka arvo on null:

Main.java

Main.java

copy
12345678
package com.example; public class Main { public static void main(String[] args) { String string = null; System.out.println(string); } }

Kuten huomaat, näytölle tulostuu null ja koodi näyttää toimivan. Kokeillaanpa nyt käyttää mitä tahansa metodia muuttujalla, jonka arvo on null:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String string = null; string.toLowerCase(); System.out.println(string); } }

Kun yritetään kutsua mitä tahansa metodia merkkijonon muuttujalle, jonka arvo on null, saadaan NullPointerException.

Saatat ajatella, ettei tämä virhe ole kovin vakava, mutta myöhemmin, kun saat arvoja, joita et ole itse kirjoittanut, kohtaat sen usein. Siksi on tärkeää ymmärtää, miten tämä virhe ratkaistaan jo nyt.

Tapoja välttää NPE:

  • Ole huolellinen. Jos luot merkkijonon muuttujan, tarkista kahdesti, oletko alustanut sen;
  • Käytä null-tarkistusta ennen muuttujan käyttöä, esimerkiksi.
Main.java

Main.java

copy
123456789101112
package com.example; public class Main { public static void main(String[] args) { String string = null; if (string == null) { // null check System.out.println("Can't use methods with string, because value is null"); } else { System.out.println(string); } } }
Tehtävä

Swipe to start coding

Kehität järjestelmää, joka käsittelee työntekijöiden sähköpostiosoitteita.
Jotkin sähköpostiosoitteet saattavat puuttua (null).
Tehtävänäsi on tarkistaa ja käsitellä vain ei-null ja oikein muotoillut sähköpostiosoitteet.

  1. Sinulle annetaan taulukko työntekijöiden sähköpostiosoitteita.
  2. Käy läpi jokainen email taulukossa.
  3. Jokaiselle riville:
    • Tarkista, että email ei ole null
    • Ja tarkista, että siinä on @-merkki
  4. Jos molemmat ehdot täyttyvät, tulosta sähköpostiosoite konsoliin.
  5. Muussa tapauksessa tulosta:
    "Invalid or missing email"

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you show me an example of how to check for null before using a variable?

What are some other common causes of NullPointerException in Java?

Can you explain the difference between null and an empty string in Java?

close

bookNullPointerException

Pyyhkäise näyttääksesi valikon

NPE

NullPointerException eli NPE on virhe, jonka jokainen Java-ohjelmoija tuntee. Tämä virhe on tunnettu ohjelmoijien ärsyttämisestä.

Ensiksi tarkastellaan null-arvon käsitettä merkkijonon muuttujalle. Kun luodaan merkkijonon muuttuja, mutta unohdetaan alustaa se, se saa arvokseen null. Vertailun vuoksi, jos int-muuttujaa ei alusteta, se saa arvon 0.

Tarkastellaan esimerkkiä merkkijonon muuttujasta, jonka arvo on null:

Main.java

Main.java

copy
12345678
package com.example; public class Main { public static void main(String[] args) { String string = null; System.out.println(string); } }

Kuten huomaat, näytölle tulostuu null ja koodi näyttää toimivan. Kokeillaanpa nyt käyttää mitä tahansa metodia muuttujalla, jonka arvo on null:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String string = null; string.toLowerCase(); System.out.println(string); } }

Kun yritetään kutsua mitä tahansa metodia merkkijonon muuttujalle, jonka arvo on null, saadaan NullPointerException.

Saatat ajatella, ettei tämä virhe ole kovin vakava, mutta myöhemmin, kun saat arvoja, joita et ole itse kirjoittanut, kohtaat sen usein. Siksi on tärkeää ymmärtää, miten tämä virhe ratkaistaan jo nyt.

Tapoja välttää NPE:

  • Ole huolellinen. Jos luot merkkijonon muuttujan, tarkista kahdesti, oletko alustanut sen;
  • Käytä null-tarkistusta ennen muuttujan käyttöä, esimerkiksi.
Main.java

Main.java

copy
123456789101112
package com.example; public class Main { public static void main(String[] args) { String string = null; if (string == null) { // null check System.out.println("Can't use methods with string, because value is null"); } else { System.out.println(string); } } }
Tehtävä

Swipe to start coding

Kehität järjestelmää, joka käsittelee työntekijöiden sähköpostiosoitteita.
Jotkin sähköpostiosoitteet saattavat puuttua (null).
Tehtävänäsi on tarkistaa ja käsitellä vain ei-null ja oikein muotoillut sähköpostiosoitteet.

  1. Sinulle annetaan taulukko työntekijöiden sähköpostiosoitteita.
  2. Käy läpi jokainen email taulukossa.
  3. Jokaiselle riville:
    • Tarkista, että email ei ole null
    • Ja tarkista, että siinä on @-merkki
  4. Jos molemmat ehdot täyttyvät, tulosta sähköpostiosoite konsoliin.
  5. Muussa tapauksessa tulosta:
    "Invalid or missing email"

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 5
single

single

some-alt