Il suffix di un file che contiene codice java è .java
Il suffix di un file che contiene il bytecode è .class
Un file sorgente non deve essere più lungo di 2000 righe di codice.
Un file contiene al massimo una class pubblica o una interface pubblicca. La class pubblica o la interface pubblica è la prima class dichiarata dentro il file.
Un file sorgente inizia con un commento:
/* * Il nome della class * La versione * La data * Il copyright che si applica */Dopo si fa la dichiarazione di package e gli import nell'ordine seguente:
package mio.package; import altro.package1.Object1; import altro.package1.Object2; import altro.package2.Object3;
/** * Descrizione della class * * @version il numero di versione e la data * @author l'autore della class **/Dopo la definizione della class
public class Point {abbiamo nell'ordine:
/** commento per scale */ public static int scale; /** commento per number */ private static int number;
/** commento per x */ public int x; /** commento per y */ public int y;
/** commento per il primo costruttore */ Point(int x, int y) { ... } /** commento per il secondo costruttore */ Point(int x) { ... }
/** commento per il metodo */ int distanceToOrgin() { ... }
package it.univaq.lsp.progetto;
class PuntoColorato { ... }
int getX() { ... }
method(expression1, object1.method2(expression2, expression3));che
method(expression1, object1.method2(expression2, expression3));
if ((condition1 && condition2) || condition3) { break; }il break e l'ultima condizione si confondono. Meglio
if ((condition1 && condition2) || condition3) { break; }
void method() { int int1 = 0; //inizio del block del metodo if (test) { int int2 = 0; // inizio del block del then ... } ... }
int getX() { return x; }I metodi sono separati fra di loro con una riga bianca.
if (test) { ... }o
if (test) { ... } else { ... }
for (init; test; incr) { ... }
while (test) { ... }
do { ... } while (test)
switch (test) { case 1: istruzione; /* No break */ case 2: istruzione; break; case 3: istruzione; break; default: istruzione; }
try { istruzione; } catch (Exception e) { istruzione; } finally P istruzione; }
while (true) { ... }
Point(int x, int y) { ... }
return (a + b) * c;
for (int i = 0; i < 10; i++) { ... }
((Point) o).getX()
(public o protected o private o niente) dopo (abstract o static o niente) dopo (final o niente).
Per esempio:
class A { public static final int VAL = 1; private int x; public final int getX() { return x; } }
class A { boolean getAnswer() throws NoAnswerException { for (int i = 0; i < 10; i++) { printMessage("Yes or No?"); String s = readAnswer(); if ("Yes".equals(s)) { return true; } else ("No".equals(s)) { return false; } } throw new NoAnswerException(); } }Meglio:
class A { static final String MESSAGE = "Yes or No?"; static final String YES = "Yes"; static final String NO = "No"; static final int ITER = 10; boolean getAnswer() throws NoAnswerException { for (int i = 0; i < ITER; i++) { printMessage(MESSAGE); String s = readAnswer(); if (YES.equals(s)) { return true; } else (NO.equals(s)) { return false; } } throw new NoAnswerException(); } }