Static keywords mean, methods/variables attached to class, not with objects. So this variables/methods is shared with all objects instances of this class.Following advantages, we can get using static.
1. We can invoke a static method without creating objects. So Utility methods can be static
example
public class DateUtils
{
public static Date getSystemdate()
{
return new Date(System.currenMillsInSecond());
}
public static Date getPrevousDay()
{
}
//etc
}
.2. If you want to declare a Global value which will share among objects. suppose wants to calculate hit count of a servlet
public class Countservlet extends HttpServlet
{
private static int count = 0;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
count++;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
doGet(request,response);
}
}
3. If you want to make a class level synchronization by synchronizing static you can achieve it.
public class Account
{
private static int min_balance=100;
public synchronize void credit(int amount)
{
min_balance= amount;
}
}
Now no object can change the state of min_balance as it is class level synchronization.
1. We can invoke a static method without creating objects. So Utility methods can be static
example
public class DateUtils
{
public static Date getSystemdate()
{
return new Date(System.currenMillsInSecond());
}
public static Date getPrevousDay()
{
}
//etc
}
.2. If you want to declare a Global value which will share among objects. suppose wants to calculate hit count of a servlet
public class Countservlet extends HttpServlet
{
private static int count = 0;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
count++;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
doGet(request,response);
}
}
3. If you want to make a class level synchronization by synchronizing static you can achieve it.
public class Account
{
private static int min_balance=100;
public synchronize void credit(int amount)
{
min_balance= amount;
}
}
Now no object can change the state of min_balance as it is class level synchronization.
Post a Comment