1. Class variable (declared by using keyword static)
2. Instance variable ( declared in Class but without static)
3. local variable (declared in block, method argument or inside methods)
reference word is used for pointing towards object in heap , so if any variable is not primitive type and its pointing to object you can call it as reference variable just for namesake but above three are variables based on scope.