An instance field lives inside each object — one copy per object. A static field lives on the class itself — one shared copy for everyone.
new BankAccount(...))
each gets its own copy
public class BankAccount { private static double interestRate; // SHARED private String number; // per instance private String name; // per instance private double balance; // per instance public static double getInterestRate() { return interestRate; } public static void setInterestRate(double r) { BankAccount.interestRate = r; } public void deposit(double amount) { this.balance += amount; } }
BankAccount needs its own value, it's an instance field. If every account should share the same value — a fee schedule, a tax rate, a global counter — it's static. BankAccount.setInterestRate(0.045), not through an instance. You don't need to new anything to read or change a static.