A) is using a Locale constructor to create a new Locale object B) is not creating a new Locale object . New object is only created through constructors. Locale.US is a static Locale object provided in the API library, many other such static locale objects are available to use. So here we are just making a reference variable l of type Locale and pointing it to existing static Locale object -> Locale.US C) is not creating a new object. It is setting the current locale to the existing static Locale object.