Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the purpose of static keyword in this simple example? [duplicate]

Tags:

java

static

Possible Duplicate:
When should a method be static?

Usually when writing a static method for a class, the method can be accessed using ClassName.methodName. What is the purpose of using 'static' in this simple example and why should/should not use it here? also does private static defeat the purpose of using static?

public class SimpleTest { 

   public static void main(String[] args) {
         System.out.println("Printing...");
         // Invoke the test1 method - no ClassName.methodName needed but works fine?
         test1(5);
   }

   public static void test1(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   public void test2(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   private static void test3(int n1) {
         System.out.println("Number: " + n1.toString());
   }
}

I had a look at a few tutorials. E.g. http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

My understanding of it is that instead of creating an instance of a class to use that method, you can just use the class name - saves memory in that certain situations there is no point in constructing an object every time to use a particular method.

like image 319
Mercury Avatar asked Jan 23 '13 20:01

Mercury


People also ask

What is the purpose of static keyword?

In Java, static keyword is mainly used for memory management. It can be used with variables, methods, blocks and nested classes. It is a keyword which is used to share the same variable or method of a given class. Basically, static is used for a constant variable or a method that is same for every instance of a class.

What is purpose of static and this keyword with example?

The static keyword in Java is used to share the same variable or method of a given class. The users can apply static keywords with variables, methods, blocks, and nested classes. The static keyword belongs to the class than an instance of the class.

What is static keyword in simple words?

The static keyword is a non-access modifier used for methods and attributes. Static methods/attributes can be accessed without creating an object of a class.

What is static in Java with example?

The static variable can be used to refer to the common property of all objects (which is not unique for each object), for example, the company name of employees, college name of students, etc. The static variable gets memory only once in the class area at the time of class loading.


3 Answers

The purpose of the static keyword is to be able to use a member without creating an instance of the class.

This is what happens here; all the methods (including the private ones) are invoked without creating an instance of SimpleTest.

like image 90
O. R. Mapper Avatar answered Oct 03 '22 02:10

O. R. Mapper


In this Example,Static is used to directly to access the methods.A private static method defeats the purpose of "Data hiding".

Your main can directly call test1 method as it is also Static,it dosn't require any object to communicate.Main cannot refer non-static members,or any other non-static member cannot refer static member.

"non-static members cannot be referred from a static context"

You can refer This thread for more info about Static members.

like image 21
joey rohan Avatar answered Oct 03 '22 03:10

joey rohan


static means that the function doesn't require an instance of the class to be called. Instead of:

SimpleTest st = new SimpleTest();
st.test2(5);

you can call:

SimpleTest.test1(5);

You can read more about static methods in this article.

A question about private static has already been asked here. The important part to take away is this:

A private static method by itself does not violate OOP per se, but when you have a lot of these methods on a class that don't need (and cannot*) access instance fields, you are not programming in an OO way, because "object" implies state + operations on that state defined together. Why are you putting these methods on that class, if they don't need any state? -eljenso

like image 33
Foggzie Avatar answered Oct 03 '22 04:10

Foggzie