Java > Object-Oriented Programming (OOP) > Classes and Objects > Static Variables and Methods
Static Method for Utility Class: String Reversal
This example demonstrates a utility class with a static method for reversing a string. The StringUtil
class provides a reusable function that can be called directly on the class without creating an instance.
Code Snippet
The StringUtil
class is designed as a utility class. It has a private constructor to prevent instantiation. The reverseString()
method is a static method that takes a string as input and returns the reversed string. The method handles null and empty strings gracefully. The main()
method demonstrates how to call the static method directly on the StringUtil
class.
public class StringUtil {
// Private constructor to prevent instantiation
private StringUtil() {
// Utility class, should not be instantiated
}
public static String reverseString(String input) {
if (input == null || input.isEmpty()) {
return input;
}
return new StringBuilder(input).reverse().toString();
}
public static void main(String[] args) {
String str = "hello";
String reversed = StringUtil.reverseString(str);
System.out.println("Original string: " + str);
System.out.println("Reversed string: " + reversed);
}
}
Concepts Behind the Snippet
Static methods are often used for utility functions that don't depend on the state of any particular object. They are called directly on the class using the class name, e.g., ClassName.staticMethod()
. A private constructor prevents creating objects of this class.
Real-Life Use Case
Utility classes with static methods are commonly used for tasks like string manipulation, date formatting, mathematical calculations, or data validation. They provide reusable functionality that can be easily accessed throughout the application.
Best Practices
Interview Tip
Be able to explain the purpose of utility classes and when it's appropriate to use them. Understand the difference between static and instance methods and when to use each. Be prepared to discuss the importance of thread safety when using static methods in multi-threaded applications.
When to Use Them
Use static methods in utility classes when you need reusable functions that don't depend on the state of any particular object. This promotes code reuse and avoids unnecessary object creation.
Memory Footprint
Since utility classes are not instantiated (due to the private constructor), they don't contribute to the memory footprint in terms of object instances. The static methods and any static variables they use are loaded into memory when the class is loaded.
Alternatives
Pros
Cons
FAQ
-
Why is the constructor of the
StringUtil
class private?
The constructor is private to prevent instantiation of theStringUtil
class. Since all the methods in the class are static, there is no need to create an object of the class. Making the constructor private enforces this design. -
Can I overload static methods?
Yes, you can overload static methods just like you can overload non-static methods. Overloading means having multiple methods with the same name but different parameter lists. -
Are static methods inherited?
Static methods are not inherited in the same way as instance methods. While a subclass can declare a method with the same signature as a static method in the superclass, this is considered method hiding, not method overriding. The subclass method does not replace the superclass method; it simply hides it within the subclass.