Java’s syntax
Created by Giuseppe A. Cotroneo
ATTENZIONE: Il materiale che segue è stato interamente scritto, raccolto ed organizzato dal creatore. Per correttezza vi chiedo soltanto un favore: quello di non diffondere questo contenuto ma di rimandare, terzi eventuali richiedenti, direttamente all’acquisto su Skuola.net o eventualmente contattando privatamente il creatore che provvederà a fornirne il link ricordandovi, per altro, che diffondere il contenuto senza il consenso è ILLEGALE e PUNIBILE LEGALMENTE.
Informazioni generali sulla struttura di un programma Java
- Bisogna ricordare che il file .java non può ricevere direttamente delle istruzioni, bensì le riceve mediante i metodi i quali fanno da tramite e consentono la 'lettura' delle istruzioni.
- Il metodo principale è il main, il quale dà inizio a tutto il processo.
Scheletro di un banale programma Java:
- Java Project Folder (usually in default folder by Eclipse) and named with MAIUSC
- Package named without MAIUSC
- Class named starting with MAIUSC
Esempio:
class Nome {
public static void main (String[] args) {
System.out.println("Ciao!"); // Nota che ogni istruzione termina con ;
}
}
- Si noti come la "Classe Principale" ha lo stesso nome del file che la contiene ed inizia per MAIUSC letter.
- Si notino (nel main) gli attributi:
- Public: Poiché la classe viene resa pubblica e dunque mostrata all'utente
- Static: Poiché non sono stati creati oggetti prima di esso
- Void: Poiché non restituisce nulla direttamente (non dotato di un proprio return)
Altre utili informazioni
- Overloading: Si parla di Overload in relazione ai metodi quando un metodo può essere richiamato con più di un modo. Per esempio:
System.out.println();oppureSystem.out.print(); - Polimorfismo: Un metodo che può essere eseguito su più di un solo tipo. Ad esempio il famoso +. Esso è utile per la somma numerica ma anche per la concatenazione di stringhe.
- Indirizzo in memoria: Se ho un elemento di tot bit (es. 32 bit [4 byte]) esso avrà un indirizzo in memoria che sia lungo esattamente 32 bit. Dunque se l'indirizzo dovesse essere 1024, allora l'indirizzo di riferimento sarà il 1024. Ma in realtà in memoria quell'elemento occuperà più posizioni (4 byte) dunque da 1024 a 1028.
Utili e pratiche informazioni
- File.java: Se un file si chiama 'File', deve esserci dentro una classe principale di nome 'File' (con MAIUSC).
- Parentesi {}: Le parentesi graffe indicano dove inizia e dove finisce un codice. Per Java il blocco (delimitato da e contenente più istruzioni) è una singola istruzione.
- Istruzioni (;): In Java ogni istruzione termina con un punto e virgola.
- Indentazioni e ritorni a capo: Java ignora le indentazioni e i ritorni a capo, dunque sarebbe possibile scrivere anche su una sola riga. Tuttavia, si sconsiglia questo tipo di notazione poiché è scomodo e confusionario per la lettura.
- Packages: Come fosse una famiglia fatta di classi. Se ho più file "classe" (es. C1.java, C2.java, C3.java) e voglio impacchettarli, devo inserirli nella stessa cartella (es. "ciao") la quale deve necessariamente avere lo stesso nome del pacchetto (in questo caso "ciao"). Il pacchetto ha sempre il nome in minuscolo salvo sigle (es. NBA). Il file C1, C2, C3 deve iniziare con la seguente istruzione:
package ciao;. Ma si ricordi che Java è furbo: al posto di importare tutte le classi in memoria, sfrutta un metodo on demand caricandole in memoria solo quando utilizzate. Essi sono dunque dei contenitori di classi che a loro volta contengono metodi. Importarli importerà tutte le classi e dunque tutti i metodi! Per importare un intero package:import nomePackage.*;
Classe
Grande contenitore di metodi. Solitamente si utilizzano per la creazione di oggetti.
Metodi
- In Java le functions (funzioni) si chiamano metodi e DEVONO INIZIARE CON L'INIZIALE MINUSCOLA.
- Essi possono essere dinamici (di proprietà degli oggetti) oppure statici (di proprietà della classe).
Modificatori/Modifiers
Essi possono essere usati solo nelle classi e sono:
- Public: L’elemento è di dominio pubblico. Lo do al mondo e tutti possono vederlo e modificarlo.
- Protected: L’elemento non lo do al mondo. Lo tengo per me e per gli eredi della Superclass.
- Private: L’elemento è strettamente mio. Non lo do al mondo in nessun caso.
- (Nulla): È come se fosse un package.
Oggetti
Un oggetto è una classe dotata di attributi e atteggiamenti che ne descrivono lo stesso oggetto.
Assegnamento e Alias
ATTENZIONE: Assegnamento 'primitivo'.
- Alias: Se assegno
int x = 3;esso è un assegnamento primitivo. Dunque, se successivamente chiamassiy = x;, y sarebbe un alias di x e al variare di x varrebbe il suo valore. - Se
P1(k,g) = 9,8eP2(x,y) = 3,2ma successivamenteP2 = P1, allora l'indirizzo viene modificato e quello precedente finirà nel garbage collector per poi essere eliminato da Java. Se stampoP1non avrò un valore bensì un indirizzo in memoria. Per evitarlo usoToString(generalmente Eclipse lo capisce e chiama ToString automaticamente).
Garbage Collection
Raccoglitore di spazzatura momentaneo, presto questo contenuto verrà sovrascritto e dunque eliminato.
Sintassi vera e propria di Java
Commenti
In Java i COMMENTI sono un elemento molto utile per:
- Prendere appunti.
- Migliorare la ‘lettura futura’.
- Talvolta ‘bloccare momentaneamente l’esecuzione di una parte del codice’.
/* COMMENTO SU PIÙ LINEE */ // COMMENTO SU UNA LINEA SOLA
Classe principale
- Public: Specifica che la classe sia pubblica. Cioè disponibile anche agli utenti (a tutti).
- Class: Contenitore di metodi disponibili.
Esempio:
public class Lezione {}
Object
Superclasse Universale: Classe che contiene tutti gli oggetti creati.
Attributi Public/Private
- Public: L’elemento sarà disponibile all’utente che potrà tranquillamente accedervi in ogni momento e talvolta modificarlo.
- Private: L’elemento sarà privato e l’utente non potrà accedervi per vederlo né modificarlo. Ottima fonte di sicurezza.
Override
Sovrascrivere un metodo già esistente.
@Override
public void nomeMetodo() {
// codici
}
Print (Stampa)
Shortcut: ‘syso’ + ctrl + space bar
- Il primo caso stampa la stringa e va a capo;
- Il secondo caso stampa la stringa ma resta sulla stessa linea/riga;
System.out.println("Hello World!");
System.out.print("Hello!");
Metodo particolare: Stampa formattata
Ovviamente posso usare qualsiasi numero dimensionale che sia intero. Scrivendo la notazione %Numerod con numero = intero ecco cosa succede:
int x = 73;
System.out.printf("%5d", x); // Stampa il valore di x in un format di dimensione 500073
Input da tastiera (Scanner)
In Java l’input da tastiera si chiama Scanner ed è un metodo complesso rispetto a linguaggi come Python. Dunque vediamo il suo funzionamento in modo pratico e successivamente cosa conviene o meno fare durante l’uso dell’input da tastiera.
- Punto 1: Ignora il fatto e l’errore legato all’apertura della keyboard senza la sua chiusura.
- Punto 2:
kb.nextLine();Oppure per le stringhe e così via... - Punto 3: Spesso quest’istruzione si omette poiché il programma prevede l’uso dello scanner altre volte durante l’esecuzione. Se così non fosse allora converrebbe chiuderla.
import java.util.Scanner;
class MyClass {
@SuppressWarnings("resource") // Punto 1
Scanner kb = new Scanner(System.in);
System.out.println("inserire un numero"); // inserisci valore da input
int a = kb.nextInt(); // Punto 2
System.out.println(a + 8);
kb.close(); // Punto 3
}
Generalmente questo metodo, se utilizzato, è utilizzato più volte all’interno di un programma.
-
Appunti sul Linguaggio Python
-
Appunti sul linguaggio
-
Appunti di Programmazione orientata agli oggetti e Java
-
Appunti Java