Home > Java > JavaBase > body text

what is java static

angryTom
Release: 2019-11-13 13:39:14
Original
3212 people have browsed it

what is java static

What is java static

java static includes static variables, static methods, and static initialization blocks, the following is a detailed explanation of static. (Recommended tutorial: java tutorial)

1. What is a static variable

As we all know, we can create multiple such variables based on one class Class objects, each object has its own members, independent of each other.

However, sometimes, we prefer that all objects of this class share the same member. This is when static comes into play!

Members modified by static in Java are called static members or class members. It belongs to the entire class, not to an object, that is, it is shared by all objects of the class.

Static members can be accessed directly using the class name, or they can be accessed using the object name. Of course, in view of the particularity of its role, it is recommended to use class names to access

Use static to modify variables, methods and code blocks.

public class Test1 {
    // static修饰的变量为静态变量,所有类的对象共享hobby
    static String hobby = "Tedu";
    
    public static void main(String[] args) {
        // 静态变量可以直接使用类名来访问,无需创建对象
        System.out.println("通过类名访问hobby:" + Test1.hobby);
        // 创建类的对象
        Test1 t1 = new Test1();
        // 使用对象名访问静态变量
        System.out.println("使用对象名访hobby:" + t1.hobby);
        // 使用对象名的形式修改静态变量的值
        t1.hobby = "cjj";
        // 再次使用类名访问静态白变量,值已经被修改
        System.out.println("通过类名访问hobby:" + Test1.hobby);
    }
}
Copy after login

Running result:

通过类名访问hobby:Tedu
使用对象名访hobby:Tedu
通过类名访问hobby:cjj
Copy after login

Note:

Static members belong to the entire class. When the system uses the class for the first time, it will allocate memory space until the Resources will be recycled only after the class is unloaded!

2. Static methods used by static

Like static variables, we can also use static modified methods, called static methods or class methods.

In fact, the main method we have been writing before is a static method

public class Test01 {
    //使用static关键字声明静态方法
    public static void print() {
        System.out.println("欢迎你:Cjj!");
    }
    
    public static void main(String[] args) {
        //直接使用类名调用静态方法
        Test01.print();
        //也可以通过对象名调用,当然更推荐使用类名调用
        Test01 t1 = new Test01();
        t1.print();
    }
}
Copy after login

Copy code

欢迎你:Cjj!
欢迎你:Cjj!
Copy after login

Note:

1. Static methods can directly call similar methods Static members in , but non-static members cannot be called directly. For example:

If you want to call non-static variables in a static method, you can create an object of the class and then access the non-static variables through the object. For example:

2. In ordinary member methods, you can directly access non-static variables and static variables of the same type, such as:

3. Non-static methods cannot be directly called in static methods. You need to Access non-static methods through objects. For example:

public class Test01 {
    String name = "Cjj"; //静态成员变量
    static String hobby = "study"; //非静态成员变量
    
    //普通成员方法
    public void print1() {
        System.out.println("普通成员方法~~~"); 
    }
    
    //静态成员方法
    public static void print2() {
        System.out.println("静态成员方法~~~");
    }
    
    public static void main(String[] args) {
        //普通成员方法必须通过对象来调用
        Test01 t1 = new Test01();
        t1.print1();
        //可以直接调用静态方法
        print2();
    }
}
Copy after login

3. Static initialization block used by static

In Java, data can be assigned through initialization blocks. For example:

public class Test02 {
    String name; // 定义一个成员变量
    //通过初始化块为成员变量赋值
    {
        name = "cjj";
    }
}
Copy after login

Execute these code blocks in sequence. If an initialization block is modified with static, it is called a static initialization block.

Note:

The static initialization block is only executed when the class is loaded, and will only be executed once. At the same time, the static initialization block can only assign values ​​to static variables and cannot initialize ordinary member variables.

Let’s take a look at a piece of code:

public class Test02 {
    int num1;
    int num2;
    static int num3;
    public Test02() {// 构造方法
        num1 = 11;
        System.out.println("通过构造方法为变量num1赋值");
    }
    { // 初始化块
        num2 = 22;
        System.out.println("通过初始化块为变量num2赋值");
    }
    static {// 静态初始化块
        num3 = 33;
        System.out.println("通过静态初始化块为静态变量num3赋值");
    }
    
    public static void main(String[] args) {
        Test02 t1 = new Test02(); //创建对象
        System.out.println("num1:" + t1.num1);
        System.out.println("num2:" + t1.num2);
        System.out.println("num3:" + num3);
        
    }
}
Copy after login

Running results:

通过静态初始化块为静态变量num3赋值
通过初始化块为变量num2赋值
通过构造方法为变量num1赋值
num1:11
num2:22
num3:33
Copy after login

By outputting the results, we can see that the static initialization block is executed first when the program is running, and then The normal initialization block is executed, and the constructor method is executed last. Since the static initialization block is only executed once when the class is loaded, the static initialization block is not executed when the object hello2 is created again.

The class is loaded the first time it is used, and will not be removed after loading.

The above is the detailed content of what is java static. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!