Skip to content

Java Packages

What exactly are packages, you ask? Well, think of them as tidy little containers for your Java classes, neatly bundling related code together like items in a well-packed suitcase. Packages provide a hierarchical structure that helps keep your code organized, making it easier to manage and maintain as your projects grow in size and complexity.

Example

java
// Define a simple class within a package named "com.example"
package com.example;

public class MyClass {
    public void greet() {
        System.out.println("Hello, world!");
    }
}

In this example, we've created a class named MyClass and placed it within a package named com.example. This package acts as a virtual folder, allowing us to group related classes together under a common namespace.

But wait, there's more! Packages also enable us to avoid naming conflicts by providing a unique namespace for our classes. Imagine a bustling city where every building has a unique address—packages serve a similar purpose, ensuring that classes with the same name can peacefully coexist within different packages without causing chaos.

another example:

java
// Define another class within a different package
package com.anotherexample;

public class AnotherClass {
    public void farewell() {
        System.out.println("Goodbye, world!");
    }
}

In this example, we've created a class named AnotherClass and placed it within a different package named com.anotherexample. Despite having the same class name as MyClass, there's no conflict because they reside in separate packages.

Importing Packages

In Java, you can import packages using the import statement. Here's how it works:

java
import packageName.ClassName;

You can import a specific class from a package by specifying the package name followed by the class name. For example:

java
import java.util.ArrayList;

This imports the ArrayList class from the java.util package, allowing you to use it in your code.

Importing All Classes from a Package:

If you want to import all classes from a package, you can use the * wildcard. For example:

java
import java.util.*;

This imports all classes from the java.util package, enabling you to use any class from that package without specifying individual imports.

Example:

Let's say you have a Java class that needs to use the ArrayList class from the java.util package:

java
import java.util.ArrayList;

public class MyClass {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("World");
        System.out.println(list);
    }
}

In this example, we import the ArrayList class using import java.util.ArrayList;, and then we can use it in our code to create and manipulate an array list of strings.

Using Fully Qualified Class Names:

Alternatively, you can use fully qualified class names without importing packages. For example:

java
public class MyClass {
    public static void main(String[] args) {
        java.util.ArrayList<String> list = new java.util.ArrayList<>();
        list.add("Hello");
        list.add("World");
        System.out.println(list);
    }
}

While this approach works, it can make your code less readable, especially if you're using classes from multiple packages extensively.

Waytojava is designed to make learning easier. We simplify examples for better understanding. We regularly check tutorials, references, and examples to correct errors, but it's important to remember that humans can make mistakes.