In Java, a package is a way of organizing classes and interfaces into a single unit. This helps in managing large projects by grouping related classes together and avoiding naming conflicts. Understanding packages is crucial for leveraging the Java Standard Library (API) and creating your own organized codebase.
Java comes with a rich set of built-in packages, collectively known as the Java API (Application Programming Interface). These packages provide a wide range of functionalities that can be used in various applications. Some commonly used built-in packages include:
String, Object, and Exception.To use classes from these packages, you typically need to import them using the import keyword. For example:
1import java.util.ArrayList;23public class Main {4public static void main(String[] args) {5ArrayList<String> list = new ArrayList<>();6list.add("Hello");7System.out.println(list);8};9}
$ javac Main.java$ java Main
[Hello]
The import keyword is used to include classes or interfaces from other packages in your Java program. There are two types of import statements:
1import java.util.ArrayList;23public class Main {4public static void main(String[] args) {5ArrayList<String> list = new ArrayList<>();6list.add("Hello");7System.out.println(list);8}9}
$ javac Main.java$ java Main
[Hello]
1import java.util.*;23public class Main {4public static void main(String[] args) {5ArrayList<String> list = new ArrayList<>();6list.add("Hello");7System.out.println(list);8}9}
$ javac Main.java$ java Main
[Hello]
You can create your own packages to organize your classes. This is particularly useful in large projects where multiple developers are involved.
package keyword at the beginning of each Java file within that package.Example:
Suppose you want to create a package named com.example.
Create Directory Structure: src/ └── com/ └── example/ └── Main.java
Declare the Package in Main.java:
1package com.example;23public class Main {4public static void main(String[] args) {5System.out.println("Hello from com.example package!");6}7}
src directory.$ javac com/example/Main.java$ java com.example.Main
Hello from com.example package!
To use classes from a user-defined package, you need to import them just like built-in packages.
1package com.example;23public class User {4private String name;56public User(String name) {7this.name = name;8}910public void display() {11System.out.println("User: " + name);12}13}
1package com.example;23import com.example.User;45public class Main {6public static void main(String[] args) {7User user = new User("Alice");8user.display();9}10}
$ javac com/example/User.java$ javac com/example/Main.java$ java com.example.Main
User: Alice
Let's create a simple application that demonstrates the use of built-in and user-defined packages.
Directory Structure: src/ ├── com/ │ └── example/ │ ├── Main.java │ └── User.java └── utils/ └── MathUtils.java
User.java:
1package com.example;23public class User {4private String name;56public User(String name) {7this.name = name;8}910public void display() {11System.out.println("User: " + name);12}13}
MathUtils.java:
1package utils;23public class MathUtils {4public static int add(int a, int b) {5return a + b;6}78public static int subtract(int a, int b) {9return a - b;10}11}
Main.java:
1package com.example;23import com.example.User;4import utils.MathUtils;56public class Main {7public static void main(String[] args) {8User user = new User("Alice");9user.display();1011int sum = MathUtils.add(10, 5);12System.out.println("Sum: " + sum);1314int difference = MathUtils.subtract(10, 5);15System.out.println("Difference: " + difference);16}17}
Compile and Run:
$ javac src/com/example/User.java$ javac src/utils/MathUtils.java$ javac src/com/example/Main.java$ java com.example.Main
User: Alice Sum: 15 Difference: 5
java.lang, java.util, and java.io provide essential functionalities.import keyword is used to include classes from other packages.package keyword.Now that you have a good understanding of Java packages, let's move on to Java Inheritance, where we'll explore how classes can inherit properties and behaviors from other classes. This will further enhance your ability to create modular and reusable code.