Variables IQs
Variables IQs
Q Types of Variables
1. Instance variables
2. Static variables
3. Local variables
Q Instance variables
>. If the value of a variable is varied from object to object such type of
variables are called instance variables.
>. For every object a separate copy of instance variables will be created.
>. Instance variables will be created at the time of object creation and
destroyed at the time of object destruction hence the scope of instance variables
is exactly same as scope of objects.
>. Instance variables will be stored on the heap as the part of object.
>. Instance variables should be declared with in the class directly but
outside of anymethod or block or constructor.
>. Instance variables can be accessed directly from Instance area. But cannot
be accessed directly from static area.
>. But by using object reference we can access instance variables from static
area.
Q Static variables
>. If the value of a variable is not varied from object to object such type
of variablesis not recommended to declare as instance variables. We have to declare
such type of variables at class level by using static modifier.
>. In the case of instance variables for every object a separate copy will be
created but in the case of static variables for entire class only one copy will be
created and shared by every object of that class.
>. Static variables will be crated at the time of class loading and destroyed
at the time of class unloading hence the scope of the static variable is exactly
same as the scope of the .class file.
>. Static variables will be stored in method area. Static variables should be
declared with in the class directly but outside of any method or block or
constructor.
>. Static variables can be accessed from both instance and static areas
directly.
>. We can access static variables either by class name or by object reference
but usage of class name is recommended.
>. But within the same class it is not required to use class name we can
access directly.
Q Local variables:
>. Some times to meet temporary requirements of the programmer we can declare
variables inside a method or block or constructors such type of variables are
called local variables or automatic variables or temporary variables or stack
variables.
>. The local variables will be created as part of the block execution in
which it is declared and destroyed once that block execution completes. Hence the
scope of the local variables is exactly same as scope of the block in which we
declared.
>. For the local variables JVM won't provide any default values compulsory we
should perform initialization explicitly before using that variable.
Example:
class Test
{
public static void main(String[] args)
{
int x;
if(args.length>0){
x=10;
}
System.out.println(x); //C.E:variable x might not have been
initialized
}
}
Note: The only applicable modifier for local variables is final. If we are
using any other modifier we will get compile time error.
eg: m1(int...x){}
We can call or invoke this method by passing any no. Of int values including
zeronumber also.
>. if we mix var-arg parameter with general parameter then var-arg parameter
should be
the last parameter.
Example:
methodOne(int a,int... b) //valid
methodOne(int... a,int b) //(invalid)
>. With in the var-arg method we can take only one var-arg parameter. i.e.,
if we are
trying to more than one var-arg parameter we will get CE.
Example:
methodOne(int... a,int... b) //(invalid)
Q class Test
{
public static void methodOne(int i)
{
System.out.println("general method");
}
public static void methodOne(int... i)
{
System.out.println("var-arg method");
}
public static void main(String[] args)
{
methodOne();//var-arg method
methodOne(10,20);//var-arg method
methodOne(10);//general method
}
}
In general var-arg method will get least priority that is if no other method
matched then
only var-arg method will get the chance this is exactly same as default case
inside a
switch.
Q class Test
{
public void methodOne(int[] i){}
public void methodOne(int... i){}
}
Output:
Compile time error.
Cannot declare both methodOne(int...) and methodOne(int[]) in Test
Q Single Dimensional Array Vs Var-Arg Method:
>. Wherever single dimensional array present we can replace with var-arg
parameter.
Q Coding Standards: