¿Declarar una variable como private static varName;algo diferente de declarar una variable private varName;?
Sí, ambos son diferentes. Y el primero se llama class variableporque tiene un valor único para eso, classmientras que el otro se llama instance variableporque puede tener un valor diferente para diferentes instances(Objects). El primero se crea solo una vez en jvm y el otro se crea una vez por instancia, es decir, si tiene 10 instancias, tendrá 10 diferentes private varName;en jvm.
¿Declarar la variable como staticle da otras propiedades especiales?
Sí, las variables estáticas obtienen algunas propiedades diferentes a las variables de instancia normales. Ya mencioné algunos y veamos algunos aquí: class variables(se puede acceder directamente a las variables de instancia que se declaran como estáticas) usando el nombre de clase like ClassName.varName. Y cualquier objeto de esa clase puede acceder y modificar su valor a diferencia de las variables de instancia a las que solo acceden sus objetos respectivos. Las variables de clase se pueden usar en métodos estáticos.
¿Cuál es el uso de un private static variable en Java?
Lógicamente, private static variableno es diferente de public static variablela primera, te da más control. OMI, literalmente puedes reemplazarpublic static variable por private static variablela ayuda de public staticmétodos get y set.
Un área ampliamente utilizada private static variablees la implementación de un Singletonpatrón simple donde tendrá una sola instancia de esa clase en todo el mundo. Aquí el staticidentificador juega un papel crucial para hacer que esa instancia única sea accesible para el mundo exterior (por supuesto, el método público de obtención estática también juega un papel principal).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}