Singleton Class using Private Constructor Example in Java
On this page (9sections)
Introduction
Singleton Class Using Private Constructor is a classic Java console program that demonstrates the concept with complete source code and sample output. These programs cover your first Java class, constructors, methods and simple OOP building blocks.
This tutorial walks through the program line by line, explains how the logic works, and highlights best practices you can apply in your own code.
Syntax
class ClassName
{
static ClassName instance = null;
private ClassName() { }
static public ClassName getInstance()
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
//Usage
ClassName instance = ClassName.getInstance();
Singleton Class Example Program
class Singleton
{
static Singleton instance = null;
public int instanceValue = 10;
private Singleton() { }
static public Singleton getInstance()
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
public class SingletonClass {
public static void main(String args[])
{
Singleton instance1 = Singleton.getInstance();
Singleton instance2 = Singleton.getInstance();
//Objects are different
//But same instance will be used
instance1.instanceValue = instance1.instanceValue + 10;
System.out.println("Value of instance1.instanceValue = " + instance1.instanceValue);
System.out.println("Value of instance2.instanceValue = " + instance2.instanceValue);
}
}
Sample Output
Value of instance1.instanceValue = 20
Value of instance2.instanceValue = 20
When to use
Use this singleton class using private constructor example when learning or revising core Java syntax.
How it works
-
Execution begins in the
mainmethod — the JVM calls this method when you run the class. -
static Singleton instance = null;updates a variable used in the calculation or output. -
The
ifstatement runs the nested code only when the condition is true. -
instance = new Singleton();updates a variable used in the calculation or output. -
Singleton instance1 = Singleton.getInstance();updates a variable used in the calculation or output. -
Singleton instance2 = Singleton.getInstance();updates a variable used in the calculation or output. -
instance1.instanceValue = instance1.instanceValue + 10;updates a variable used in the calculation or output. -
A
println/printcall writes text to the console — part of the sample output below.
Best Practices
- Name classes in PascalCase and follow one public class per file when starting out.
- Keep
mainshort — delegate work to other methods as programs grow.
Common Mistakes
- Copying code without understanding each line — practice by changing one statement at a time.
- Mismatching the public class name and the
.javafilename. - Forgetting semicolons at the end of statements.