I pacchetti in Java sono un meccanismo che incapsula un gruppo di classi, sottopacchetti e interfacce. I pacchetti vengono utilizzati per:
- Previeni i conflitti di denominazione consentendo alle classi con lo stesso nome di esistere in pacchetti diversi come college.staff.cse.Employee e college.staff.ee.Employee.
- Semplifica l'organizzazione, l'individuazione e l'utilizzo delle interfacce delle classi e di altri componenti.
- Fornire accesso controllato per i membri Protected accessibili all'interno dello stesso pacchetto e per sottoclassi. I membri predefiniti (nessun specificatore di accesso) sono accessibili solo all'interno dello stesso pacchetto.
Raggruppando classi correlate in pacchetti, Java promuove l'incapsulamento dei dati rendendo il codice riutilizzabile e più facile da gestire. Importa semplicemente la classe desiderata da un pacchetto per usarla nel tuo programma.
Creazione di pacchetti personalizzati
Passaggio 1: Crea una directory in cui creiamo i nostri pacchetti e file Java.
mkdir PROGRAMMAZIONE
stringa inversa in Java
Passaggio 2: Ora cambia la directory e crea un'altra cartella all'interno della cartella principale
cd PROGRAMMAZIONE
mkdir JavaProgrammazione
cd JavaProgrammazione
matrici mkdir
Passaggio 3: Ora crea un file di testo vuoto e scrivi il codice Java sottostante e non dimenticare di salvarlo con lo stesso nome della classe con estensione .java (TwoPointers.java)
Classe TwoPointers.
Javapackage JavaProgramming.arrays; // Main class present inside the package public class TwoPointers { public static void main(String[] args) { System.out.println('Inside the package'); } }
Nota: Non dimenticare di aggiungere il nome del pacchetto all'interno del file del programma.
Passaggio 4: Ora esegui il programma con il percorso della cartella definito
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
Produzione:

Struttura delle cartelle:
Questa è la rappresentazione visiva di un pacchetto personalizzato in Java nell'immagine seguente. Per prima cosa creiamo una cartella denominata Progamming e al suo interno creiamo un pacchetto Javaprogramming e poi creiamo un altro sottopacchetto che si chiama matrici . Quindi creiamo al suo interno un file di classe Java che è mostrato nell'immagine qui sotto:
Struttura delle cartelleFunzionamento dei pacchetti Java
Struttura della directory: I nomi dei pacchetti e le strutture delle directory sono strettamente correlati. Ad esempio, se il nome di un pacchetto è college.staff.cse, le tre directory sono college staff e cse dove cse è all'interno di staff e staff è all'interno del college.
Convenzioni di denominazione : I nomi dei pacchetti sono scritti in ordine inverso rispetto ai nomi di dominio, ad es. org.geeksforgeeks.practice. In un college la convenzione potrebbe essere:
- college.tech.cse
- college.tech.ee
- college.storia.dell'arte
Esempio:
importa java.util.*;
Qui util è un sottopacchetto creato all'interno del pacchetto Java.
Accesso alle classi all'interno di un pacchetto
In Java possiamo importare classi da un pacchetto utilizzando uno dei seguenti metodi:
1. Importa una classe specifica :
import java.util.Vector;
Ciò importa solo la classe Vector dal pacchetto java.util.
ospitare Linux
2. Importa tutte le classi da un pacchetto :
importa java.util.*;
Questo importa tutte le classi e le interfacce dal pacchetto java.util ma non include i sottopacchetti.
Esempio: Importa la classe Vector
Javaimport java.util.Vector; public class Geeks { public Geeks() { // java.util.Vector is imported We are able to access it directly in our code. Vector v = new Vector(); java.util.ArrayList l = new java.util.ArrayList(); l.add(3); l.add(5); l.add(7); System.out.println(l); } public static void main(String[] args) { new Geeks(); } }
Produzione
[3 5 7]
Nota:
- Utilizzo del pacchetto di importazione.*; importa tutte le classi in un pacchetto ma non le classi dai suoi sottopacchetti.
- Quando due pacchetti hanno classi con lo stesso nome (ad esempio java.util.Date e my.package.Date) utilizza il nome completo per evitare conflitti:
import java.util.Date;
importa mio.pacchetto.Data;
Tipi di pacchetti Java
- Pacchetti integrati
- Pacchetti definiti dall'utente
1. Pacchetti integrati
Questi pacchetti sono costituiti da un gran numero di classi che fanno parte di Java API .Alcuni dei pacchetti integrati comunemente utilizzati sono:
- java.lang : Contiene classi di supporto linguistico (ad esempio classi che definiscono operazioni matematiche di tipi di dati primitivi). Questo pacchetto viene importato automaticamente.
- java.io: Contiene classi per supportare le operazioni di input/output.
- java.util : Contiene classi di utilità che implementano strutture dati come Linked List Dictionary e supportano ; per le operazioni di data/ora.
- java.applet: Contiene classi per la creazione di applet.
- java.aut: Contengono classi per l'implementazione dei componenti per le interfacce utente grafiche (come pulsanti, menu, ecc.). 6)
- java.net: Contengono classi per supportare le operazioni di rete.
2. Pacchetti definiti dall'utente
Questi sono i pacchetti definiti dall'utente.
1. Crea il pacchetto:
Per prima cosa creiamo una directory myPackage (il nome dovrebbe essere uguale al nome del pacchetto). Quindi crea MyClass all'interno della directory con la prima istruzione che rappresenta i nomi dei pacchetti.
Esempio:
Javapackage myPackage; public class MyClass { public void getNames(String s) { System.out.println(s); } }
2. Utilizzare la classe nel programma:
Ora useremo il La mia classe lezione nel nostro programma.
puntatore in cJava
import myPackage.MyClass; public class Geeks { public static void main(String args[]) { // Initializing the String variable with a value String s = 'GeeksforGeeks'; // Creating an instance of class MyClass in the package. MyClass o = new MyClass(); o.getNames(s); } }
Nota: MyClass.java deve essere salvato nella directory myPackage poiché fa parte del pacchetto.
Importazione statica in Java
L'importazione statica in Java riguarda la semplificazione dell'accesso ai membri statici e la separa dalla discussione più ampia sui pacchetti definiti dall'utente.
Importazione statica è una funzionalità introdotta nel linguaggio di programmazione Java (versioni 5 e successive) che consente ai membri (campi e metodi) definiti in una classe come pubblici statico da utilizzare nel codice Java senza specificare la classe in cui è definito il campo.
Esempio:
Javaimport static java.lang.System.*; class Geeks { public static void main(String args[]) { // We don't need to use 'System.out' as imported using static. out.println('GeeksforGeeks'); } }
Produzione
GeeksforGeeks
Gestione dei conflitti di nomi
Quando due pacchetti contengono una classe con lo stesso nome (ad esempio java.util.Date e java.sql.Date) specificare il nome completo del pacchetto per evitare conflitti.
importa java.util.*;
importa java.sql.*;
//E quindi utilizza la classe Date, otterremo un errore in fase di compilazione:
Data oggi; //ERRORE-- java.util.Date o java.sql.Date?
Il compilatore non sarà in grado di capire quale classe Date vogliamo. Questo problema può essere risolto utilizzando una specifica istruzione di importazione:
import java.util.Date;
importa java.sql.*;
Se abbiamo bisogno di entrambe le classi Date, allora dobbiamo utilizzare il nome completo del pacchetto ogni volta che dichiariamo un nuovo oggetto di quella classe. Per esempio:
java.util.Date deadLine = new java.util.Date();
java.sql.Date oggi = nuovo java.sql.Date();moltiplicazione di matrici in c
Struttura delle directory e CLASSPATH
I nomi dei pacchetti corrispondono a una struttura di directory. Ad esempio, una classe Circle nel pacchetto com.zzz.project1.subproject2 viene archiviata come:
$BASE_DIR/com/zzz/progetto1/sottoprogetto2/Circle.class
- Qui $BASE_DIR rappresenta la directory di base del pacchetto.
- Il "punto" nel nome del pacchetto corrisponde a una sottodirectory del file system.
- La directory di base ( $BASE_DIR ) potrebbe trovarsi ovunque nel file system.
- Pertanto il compilatore Java e il runtime devono essere informati sulla posizione di $BASE_DIR in modo da individuare le classi.
- Ciò è realizzato da una variabile d'ambiente chiamata PERCORSO DI CLASSE .
- CLASSPATH è simile a un'altra variabile d'ambiente PATH che viene utilizzata dalla shell dei comandi per cercare i programmi eseguibili.
Impostazione CLASSPATH
CLASSPATH può essere impostato in uno dei seguenti modi:
- CLASSPATH può essere impostato in modo permanente nell'ambiente in cui si trovano i passaggi in Windows
Vai a Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente.
- Seleziona "Variabili di sistema" per applicare il CLASSPATH per tutti gli utenti del sistema.
- Seleziona "Variabili utente" per applicarlo solo all'utente attualmente connesso.
- Modifica o crea CLASSPATH: se CLASSPATH esiste già selezionalo e fai clic su "Modifica" o se non esiste fai clic su "Nuovo"
- Inserisci i dettagli CLASSPATH: Nel campo "Nome variabile" inserisci: "CLASSPATH" Nel campo "Valore variabile" inserisci le directory e i file JAR separati da punto e virgola.
- Nel campo "Valore variabile" inserisci le directory e i file JAR separati da punto e virgola. Esempio:
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- Il punto (
.) rappresenta la directory di lavoro corrente. - Per verificare l'impostazione corrente del CLASSPATH, eseguire il seguente comando:
> IMPOSTA IL PERCORSO DI CLASSE
CLASSPATH può essere impostato temporaneamente per quella particolare sessione della shell CMD emettendo il seguente comando:
> IMPOSTA CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Invece di utilizzare la variabile d'ambiente CLASSPATH puoi anche utilizzare l'opzione della riga di comando -classpath o -cp dei comandi javac e java, ad esempio
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Illustrazione dei pacchetti definiti dall'utente: Creazione del nostro primo pacchetto: nome file: ClassOne.java
Javapackage package_name; public class ClassOne { public void methodClassOne() { System.out.println('Hello there its ClassOne'); } }
Creazione del nostro secondo pacchetto: nome file – ClassTwo.java
Javapackage package_one; public class ClassTwo { public void methodClassTwo() { System.out.println('Hello there i am ClassTwo'); } }
Facendo uso di entrambi i pacchetti creati: Nome del file – Testing.java
Javaimport package_name.ClassOne; import package_one.ClassTwo; public class Testing { public static void main(String[] args) { ClassTwo a = new ClassTwo(); ClassOne b = new ClassOne(); a.methodClassTwo(); b.methodClassOne(); } }
Ora diamo un'occhiata alla struttura delle directory sia dei pacchetti che del file della classe testing:

Modificatori di accesso nel contesto dei pacchetti
- Pubblico: Membri con il
publicIl modificatore è accessibile da qualsiasi luogo, indipendentemente dal fatto che la classe che accede sia o meno nello stesso pacchetto . - Protetto: I membri con il modificatore protected sono accessibili all'interno dello stesso pacchetto nelle sottoclassi
- Predefinito: I membri senza modificatore sono accessibili solo all'interno dello stesso pacchetto
- Privato: Membri con il
privateil modificatore è accessibile solo all'interno della stessa classe. Non è possibile accedervi dalle classi nelle stesse sottoclassi del pacchetto o in pacchetti diversi.