Static keyword Usage summary in Java

Source: Internet
Author: User

1. Static methods
In general, defining a method in a class is static, which means that you do not need an object of this class to call this method

The method declared as static has the following limitations:
· They can only invoke other static methods.
· They can only access static data.
· They cannot refer to this or super in any way.

class Simple {

Static void Go () {

System. out. println ("Welcome");

}

}

Public class Cal {

Public Static void Main (string[] args) {

Simple. Go ();

}

}

Invoking a static method is "class name. Method Name", and the use of static methods is simple as shown above. In general, static methods are often used by other classes in the application, and in Java's class libraries a large number of static methods are defined for this purpose.

2. Static variables

A variable declared as static is essentially a global variable. When declaring an object, the copy of the static variable is not produced, but all instance variables of the class share the same static variable. Static variables are similar to static methods. All such instances share this static variable, that is, when a class is loaded, only one storage space is allocated, and all objects of this class can manipulate this block of storage space, of course, for final.

class Value {

Static int c = 0;

Static Void Inc () {

c+ +;

}

}

Public class Count2 {

Public Static void prt (String s) {

System. out. Print (s);

}

Public Static void Main (string[] args) {

Value v1, v2;

V1 = new Value ();

V2 = new Value ();

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

V1. Inc ();

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

}

}

The result: v1.c=0 v2.c=0 v1.c=1 v2.c=1

This can prove that they share a piece of storage. The static variable is somewhat similar to the concept of a global variable in C.

It is worth discussing the initialization problem of static variables.

If you need to initialize your static variable with a calculation, you can declare a static block that executes only once when the class is loaded. The following example shows a class that has a static method, some static variables, and a static initialization block:

class Value3 {

Static int c = 0;

Value3 () {

c = 15;

}

VALUE3 (int i) {

c = i;

}

Static Void Inc () {

c+ +;

}

}

Public class Count {

Public Static void prt (String s) {

System. out. println (s);

}

Value3 v = new Value3 (10);

Static Value3 v1, v2;

Static {//This is a static block

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

v1 = new Value3 (27);

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

v2 = new Value3 (15);

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

}

Public Static void Main (string[] args) {

Count ct = new count ();

PRT ("ct.c=" + CT.V. c);

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

v1. Inc ();

PRT ("v1.c=" + v1. c + "v2.c=" + v2. c);

PRT ("ct.c=" + CT.V. c);

}

}

The result: v1.c=0 v2.c=0

V1.c=27 v2.c=27

V1.c=15 v2.c=15

ct.c=10

v1.c=10 v2.c=10

V1.c=11 v2.c=11

ct.c=11

This program shows the various features of static initialization. If you touch Java for the first time, the results may surprise you. It may be confusing to add parentheses after static. The first thing to tell you is that the variables defined by static take precedence over any other non-static variables, regardless of the order in which they appear. As shown in the program, although v appears in front of V1 and v2, the result is the initialization of V1 and V2 in front of v. followed by a piece of code behind static{, which is used for explicit static variable initialization, which is initialized only once, and when the class is first loaded. If you can read and understand this code, it will help you to understand the static keyword. When it comes to inheritance, the static variables of the parent class are initialized first, then the subclasses, and so on.

3. Static class

Usually a normal class is not allowed to be declared static, only one inner class can. In this case, the static inner class can be used directly as a normal class, without the need to instantiate an external class.

Public class STATICCLS {

Public Static void Main (string[] args) {

Outercls.innercls oi = new outercls.innercls ();

}

}

class OUTERCLS {

Public Static class INNERCLS {

Innercls () {

System. out. println ("Innercls");

}

}

}

The result is: innercls

4. What does static and final piece mean?
Static final is used to modify member variables and member methods, which can be simply understood as "global constants"!
For variables, this means that once a value is given it cannot be modified and is accessible through the class name.
For methods, the representation is not overwritten and can be accessed directly through the class name.

5. Supplement:

Static represents the meaning of "global" or "static", which modifies member variables and member methods, and can also form statically static blocks of code, but there is no concept of global variables in the Java language.

member variables and member methods that are modified by static are independent of any object of the class. That is, it does not depend on class-specific instances and is shared by all instances of the class. As long as this class is loaded, the Java virtual machine can find them based on the class name in the method area of the run-time data area. Therefore, a static object can be accessed before any of its objects are created, without referencing any objects.

Static member variables and member methods that are decorated with public are essentially global variables and global methods, and when you declare objects of its class, you do not generate a copy of the static variable, but all instances of the class share the same static variable.

The static variable can have a private adornment before it, indicating that the variable can be used in the static code block of the class, or in other static member methods of the class (which can also be used in non-static member methods-nonsense), but it is important that the class name cannot be referenced directly in other classes. In fact, you need to understand that private is the access permission limit, static means do not instantiate can be used, so it is easier to understand more. Static plus other access keyword effects and so on.

The static modified member variables and member methods are customarily referred to as static variables and static methods, which can be accessed directly through the class name, and Access syntax is:
Class name. static method Name (parameter list ...)
Class name. Static variable Name

A static code block is represented by a statically decorated block of code that executes when the Java Virtual Machine (JVM) loads the class (very useful, hehe).

Static variable
There are two ways to classify a class member variable statically: A variable that is statically modified, called a static variable or a class variable, and another variable that is not modified by static, called an instance variable. The difference between the two is:
For static variables there is only one copy in memory (memory saving), the JVM allocates only one memory at a time, completes the memory allocation of static variables during the loading of the class, can be accessed directly (conveniently) by the class name, and, of course, is accessible through objects (but this is not recommended).
For instance variables, when an instance is not created, the instance variable is allocated one memory, and the instance variable can have multiple copies in memory without compromising (flexibility).

static method
Static methods can be called directly from the class name, and any instance can also be called, so a static method cannot use the This and Super keywords, and cannot directly access the instance variables and instance methods of the owning class (that is, member variables and member methods without static). Only static member variables and member methods of the owning class can be accessed. Because instance members are associated with specific objects! This need to understand, want to understand the truth, not the memory!!!
Because the static method is independent of any instance, the static method must be implemented, not abstract.

Static keyword Usage summary in Java

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.