"Hé, jonge rekruut, die elke dag een heleboel fouten maakt, zelfs in de eenvoudigste programma's!

"Eh... Hallo, Diego. Tjonge, jij weet echt hoe je mensen moet opvrolijken!"

"Natuurlijk doe ik dat! Leer hoe je moet zeggen wat er gezegd moet worden. Zoals ik al zei, 'elke dag'. Om het beleefder uit te drukken, mijn begroeting betekent "toekomstige succesvolle programmeur, als je het natuurlijk niet verpest ."

"Oooh, dankjewel, mijn meest metalige leraar! .

"Je zult me ​​na deze les dankbaar zijn. Hier ga ik de meest populaire fouten opsommen die door de compiler zijn opgemerkt. En het is jouw taak om te onthouden. Een gewaarschuwd mens is een voorarm.

Een puntkomma vergeten

"De meest voorkomende fout die aspirant-Java-programmeurs maken, is de puntkomma. Of beter gezegd, de afwezigheid ervan op de plaats waar die zou moeten staan."

'De waarheid is... ik heb deze overtreding herhaaldelijk begaan.'

"Elke instructie binnen een methode moet eindigen met een puntkomma. De puntkomma is wat verklaringen of commando's scheidt: zo vertellen we de Java-compiler waar het ene commando eindigt en het volgende begint.

Voorbeelden van fouten:

foute code Correcte code
int a
int b = 5
int c = a + b
int a;
int b = 5;
int c = a + b;
System.out.println("Hello")
System.out.println("Hello");
if (2 > 3)
   System.out.println("Are we in Australia?")
if (2 > 3)
   System.out.println("Are we in Australia?");

Vergeten aanhalingstekens te sluiten

"De op een na meest voorkomende fout voor nieuwkomers in Java is het schrijven van een string in de code en vervolgens vergeten het citaat te sluiten.

Elke letterlijke tekenreeks in de code moet aan beide zijden worden omsloten door dubbele aanhalingstekens ("). Beginnende programmeurs plaatsen heel vaak aanhalingstekens aan het begin van tekst, maar ze vergeten ze aan het einde te sluiten.

foute code Correcte code
String s = "Hello;
String s = "Hello";
System.out.println("Hello);
System.out.println("Hello");
String s = "Hello";
String message = s + " and by. ;
String s = "Hello";
String message = s + " and bye.";

Vergeten een plusteken op te nemen bij het aan elkaar lijmen van strings

"Een andere veelgemaakte fout bij het werken met strings is het vergeten een plusteken te schrijven bij het aan elkaar lijmen van strings. Deze fout komt vooral voor wanneer tekst en variabelen worden samengevoegd in een lange expressie in code.

Hier zijn enkele voorbeelden:

foute code Correcte code
String s = "Hello";
String message = s  " and bye.";
String s = "Hello";
String message = s + " and bye.";
int age = 35;
System.out.println("Age=" age);
int age = 35;
System.out.println("Age=" + age);
int age = 35;
System.out.println("Age=", age);
int age = 35;
System.out.println("Age=" + age);

Vergeten accolades te sluiten

"Dit is een veel voorkomende fout. Er zijn twee situaties waarin dit typisch is:

  1. Je hebt besloten code ergens vandaan te kopiëren en hebt per ongeluk enkele accolades gemist.
  2. Je maakt jezelf gewoon niet de moeite om ervoor te zorgen dat elk open haakje gepaard gaat met een sluitend haakje."

"De tweede optie is wat ik doe. Soms laat ik me zo meeslepen dat ik het vergeet!" .

"Om deze fouten te vermijden, wordt het gewoonlijk aanbevolen voor beginnende programmeurs om de afsluitende accolade onder de openingsaccolade te schrijven.

Voorbeelden:

foute code Correcte code
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
}

Vergeten haakjes toe te voegen

"Meestal wordt deze fout gemaakt door ontwikkelaars die programmeertalen kennen die in vergelijkbare situaties geen haakjes nodig hebben.

Een mogelijkheid is dat ze gewoon vergeten haakjes aan het einde van een methodeaanroep te plaatsen:

Een andere mogelijkheid is dat ze vergeten de voorwaarde van een verklaring tussen haakjes te zetten if-else.

Voorbeelden:

foute code Correcte code
System.out.println("Hello!");
System.out.println;
System.out.println("And bye!");
System.out.println("Hello!");
System.out.println();
System.out.println("And bye!");
if 2 < 3
{
   if 3 < 4
   {
      System.out.println("Mathematics!");
   }
}
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}

mainDe methodedeclaratie onjuist schrijven

"Zodra ze de verdomde mainmethode verkondigen! Er is waarschijnlijk niets dat nieuwelingen zo laat struikelen als deze armzalige methode. Belangrijk is dat ze altijd verrast zijn en zich afvragen waarom hun programma niet wil starten? En natuurlijk is de programmeur dat ook niet de schuld, maar het programma, de compiler, de codevalidator, de Java-machine, enz. De lijst met zondebokken is eindeloos.

Voorbeelden:

foute code Uitleg
static void main(String[] args)
publicontbreekt
public void main(String[] args)
staticontbreekt
public main(String[] args)
voidontbreekt
void main(String[] args)
publicen staticontbreken
public static void main(String args)
[]ontbreekt
public static void main()
String[] argsontbreekt
public static int main(String args)
We hebben intin plaats vanvoid

De bestandsnaam is anders dan de klassenaam

"Volgens de Java-standaard moeten alle Java-klassen worden opgeslagen in een bestand met dezelfde naam als de klassenaam. En zoals eerder vermeld, is het hoofdlettergebruik hier van belang:

Bestandsnaam Naam van de klasse Opmerking
Oplossing.java Oplossing Alles is in orde
Oplossing van .java Oplossing De bestandsnaam als overbodige letter 's'
s oplossing.java Oplossing De bestandsnaam begint met een kleine letter
Oplossing. tekst Oplossing De bestandsextensie is .txt in plaats van .java
Oplossing.java oplossing De klassenaam begint met een kleine letter

"Eigenlijk kunnen er meerdere klassen worden gedeclareerd in een bestand met de extensie .java, maar slechts één daarvan kan het woord publicvoor de klassenaam hebben. En dit is de naam die moet overeenkomen met de bestandsnaam.

"Een .java-bestand moet altijd een klasse hebben waarvan de naam hetzelfde is als de bestandsnaam, en die klasse moet de publicmodifier hebben. Voorbeeld:

Oplossing.java
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

"Bovendien kunt u met de Java-taal klassen binnen klassen schrijven. Dit is een andere manier om de bovenstaande beperking te omzeilen. Als een openbare klasse (een klasse met de modifier) ​​wordt publicgedeclareerd in een bestand en dezelfde naam heeft als de bestandsnaam, dan kun je binnen deze openbare klasse zoveel klassen declareren als je wilt. Dat gezegd hebbende, dit zullen niet langer gewone klassen zijn. In plaats daarvan zullen het interne of geneste klassen zijn. Voorbeeld:

Oplossing.java
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}

Vergeten te schrijvenpackage

"Omdat programma's gewoonlijk duizenden klassen hebben, kan het moeilijk zijn om eenvoudige, begrijpelijke en unieke namen voor ze allemaal te vinden. Daarom is het in Java gebruikelijk om klassen in pakketten te groeperen met behulp van het trefwoord. Precies zoals de bestanden zijn gegroepeerd package. in mappen."

"Ah-ha, dus daarom zou elke klas moeten beginnen met een indicatie van het pakket waartoe het behoort."

"Precies. Hier is een voorbeeld:

Code zonder pakket Gecorrigeerd voorbeeld
public class Solution
{
}
package en.codegym.tasks.task0001;

public class Solution
{
}

Vergeten toe te voegenimport

"Als we de klasse van iemand anders in ons programma willen gebruiken, hebben we twee opties: overal in onze code moeten we ook de pakketnaam voor de naam van de klasse schrijven. Als alternatief kunnen we de volledig gekwalificeerde klassenaam met het trefwoord een keer importschrijven . Voorbeeld:

Zonder import te gebruiken Importeren gebruiken
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

public class Solution
{
   Scanner console = new Scanner();
}

"Beide opties werken, maar als je gewoon Scannerje code intypt zonder , toe te voegen import, dan kan de compiler niet begrijpen uit welk pakket hij de Scannerklasse moet halen, en zal je programma niet compileren."

'Dank je, Diego. Door deze les ga ik beter opletten.'

"Daar had ik op gerekend. Veel succes!"