<p>A magic number is a number that comes out of nowhere, and is directly used in a statement. Magic numbers are often used, for instance to limit the number of iterations of a loops, to test the value of a property, etc.</p>

<p>Using magic numbers may seem obvious and straightforward when you're writing a piece of code, but they are much less obvious and straightforward at debugging time.</p>

<p>That is why magic numbers must be demystified by first being assigned to clearly named constants before being used.</p>

<p>-1, 0 and 1 are not considered magic numbers.</p>

<h2>Noncompliant Code Sample</h2>

<pre>
public static void doSomething() {
  for(int i = 0; i < 4; i++){                 //Non-Compliant, 4 is a magic number
  ...
  }
}
</pre>

<h2>Compliant Solution</h2>

<pre>
public static final int NUMBER_OF_CYCLES = 4;
public static void doSomething() {
  for(int i = 0; i < NUMBER_OF_CYCLES ; i++){   //Compliant
    ...
  }
}
</pre>