国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
1. Characteristics of the static keyword:
二、static關(guān)鍵字的誤區(qū)
Home Java Javagetting Started What is the function of java static keyword?

What is the function of java static keyword?

Nov 02, 2020 am 10:42 AM
java static keyword

In Java, static is a modifier, used to modify class member methods and class member variables. In addition, static code blocks can be written to optimize program performance; methods or variables modified by the static keyword are not It needs to rely on the object for access. As long as the class is loaded, it can be accessed through the class name.

What is the function of java static keyword?

(Recommended tutorial: java introductory tutorial)

1. Characteristics of the static keyword:

There is this passage on page P86 of "Java Programming Thoughts":

"A static method is a method without this. Non-static methods cannot be called inside a static method, and the reverse is possible. And You can call the static method only through the class itself without creating any objects. This is actually the main purpose of the static method."

Although this paragraph only explains the static method Special feature, but you can see the basic function of the static keyword. In short, the description in one sentence is:

It is convenient to call (method/variable) without creating an object.

Obviously, methods or variables modified by the static keyword do not need to rely on objects for access. As long as the class is loaded, it can be accessed through the class name.

static is a modifier used to modify class member methods and class member variables. In addition, static code blocks can be written to optimize program performance;

(Video tutorial recommendation: java video tutorial)

1. Static modified member method

Static modified methods are generally called static methods. Since static methods can be accessed without relying on any object, so for For static methods, there is no this, because it is not attached to any object. Since there is no object, there is no this. And due to this feature, non-static member variables and non-static member methods of the class cannot be accessed in static methods, because non-static member methods/variables must rely on specific objects before they can be called.

But it should be noted that although non-static member methods and non-static member variables cannot be accessed in static methods, static member methods/variables can be accessed in non-static member methods. For example:

#In the above code, since the print2 method exists independently of the object, it can be called directly with the class name.

If non-static methods/variables can be accessed in static methods, then if there is the following statement in the main method:

MyObject.print2();

At this time, there are no objects, and str2 does not exist at all, so a contradiction will occur. The same is true for methods. Since you cannot predict whether non-static member variables are accessed in the print1 method, accessing non-static member methods in static member methods is also prohibited.

For non-static member methods, there is obviously no restriction on accessing static member methods/variables.

Therefore, if you want to call a method without creating an object, you can set this method to static. Our most common static method is the main method. As for why the main method must be static, it is now clear. Because the program does not create any objects when executing the main method, it can only be accessed through the class name.

2. Static modified member variables

Static modified variables are also called static variables. The difference between static variables and non-static variables is that static variables are shared by all objects and there is only one in the memory. A copy that will be initialized if and only if the class is first loaded. Non-static variables are owned by objects and are initialized when the object is created. There are multiple copies, and the copies owned by each object do not affect each other.

The initialization order of static member variables is initialized in the order defined.

3. Static modified code block

Another important role of the static keyword is to form a static code block to optimize program performance. A static block can be placed anywhere in a class, and there can be multiple static blocks in a class. When a class is loaded for the first time, each static block will be executed in the order of the static blocks, and will only be executed once.

Static block can optimize program performance because of its characteristics: it will only be executed once when the class is loaded for the first time. As follows:

class Person{
    private Date birthDate;

    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }

    boolean isBornBoomer() {
        Date startDate = Date.valueOf("1946");
        Date endDate = Date.valueOf("1964");
        return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
    }
}

isBornBoomer is used to determine whether a person was born between 1946 and 1964. Every time isBornBoomer is called, two objects, startDate and birthDate, will be generated, causing a waste of space. If you change It will be more efficient as follows:

class Person {
    private Date birthDate;
    private static Date startDate, endDate;

    static {
        startDate = Date.valueOf("1946");
        endDate = Date.valueOf("1964");
    }

    public Person(Date birthDate) {
        this.birthDate = birthDate;
    }

    boolean isBornBoomer() {
        return birthDate.compareTo(startDate) >= 0 && birthDate.compareTo(endDate) < 0;
    }
}

Therefore, many initialization operations that only need to be performed once are placed in static code blocks.

二、static關(guān)鍵字的誤區(qū)

1. 與C/C++中的static不同,Java中的static關(guān)鍵字不會(huì)影響到變量的變量或者方法的作用域。在Java中能夠影響到訪問權(quán)限的只有private、public、protected這幾個(gè)關(guān)鍵字。示例如下:

提示錯(cuò)誤,說明static關(guān)鍵字并不會(huì)改變變量和方法的訪問權(quán)限。

2. 雖然對(duì)于靜態(tài)方法來說沒有this,但是我們?cè)诜庆o態(tài)方法中能夠通過this訪問靜態(tài)方法成員變量。如下:

public class Test {

    static int value = 11;

    public static void main(String[] args) {

        new Test().printValue();

    }

    private void printValue() {
        int value = 22;
        System.out.println(this.value);
    }
}

輸出的結(jié)果是:11

這里的this表示的是當(dāng)前對(duì)象,那么通過new Test()來調(diào)用printValue的話,當(dāng)前對(duì)象就是通過new Test()生成的對(duì)象。而static變量是被對(duì)象所享有的,因此在printValue中的this.value的值毫無疑問是11。在printValue方法內(nèi)部的value是局部變量,根本不可能與this關(guān)聯(lián),所以輸出11。需要記住的是:靜態(tài)成員變量雖然獨(dú)立于對(duì)象,但是不代表不可以通過對(duì)象去訪問,所有的靜態(tài)方法和靜態(tài)變量都可以通過對(duì)象訪問(只要權(quán)限足夠)。

3. 在C/C++中static關(guān)鍵字是可以作用于局部變量的,但是在Java中是不允許使用static修飾局部變量的。這是Java語法的規(guī)定。

更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問:編程教學(xué)?。?/p>

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

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

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Java Optional example Java Optional example Jul 12, 2025 am 02:55 AM

Optional can clearly express intentions and reduce code noise for null judgments. 1. Optional.ofNullable is a common way to deal with null objects. For example, when taking values ??from maps, orElse can be used to provide default values, so that the logic is clearer and concise; 2. Use chain calls maps to achieve nested values ??to safely avoid NPE, and automatically terminate if any link is null and return the default value; 3. Filter can be used for conditional filtering, and subsequent operations will continue to be performed only if the conditions are met, otherwise it will jump directly to orElse, which is suitable for lightweight business judgment; 4. It is not recommended to overuse Optional, such as basic types or simple logic, which will increase complexity, and some scenarios will directly return to nu.

How to iterate over a Map in Java? How to iterate over a Map in Java? Jul 13, 2025 am 02:54 AM

There are three common methods to traverse Map in Java: 1. Use entrySet to obtain keys and values at the same time, which is suitable for most scenarios; 2. Use keySet or values to traverse keys or values respectively; 3. Use Java8's forEach to simplify the code structure. entrySet returns a Set set containing all key-value pairs, and each loop gets the Map.Entry object, suitable for frequent access to keys and values; if only keys or values are required, you can call keySet() or values() respectively, or you can get the value through map.get(key) when traversing the keys; Java 8 can use forEach((key,value)-&gt

How to fix java.io.NotSerializableException? How to fix java.io.NotSerializableException? Jul 12, 2025 am 03:07 AM

The core workaround for encountering java.io.NotSerializableException is to ensure that all classes that need to be serialized implement the Serializable interface and check the serialization support of nested objects. 1. Add implementsSerializable to the main class; 2. Ensure that the corresponding classes of custom fields in the class also implement Serializable; 3. Use transient to mark fields that do not need to be serialized; 4. Check the non-serialized types in collections or nested objects; 5. Check which class does not implement the interface; 6. Consider replacement design for classes that cannot be modified, such as saving key data or using serializable intermediate structures; 7. Consider modifying

Comparable vs Comparator in Java Comparable vs Comparator in Java Jul 13, 2025 am 02:31 AM

In Java, Comparable is used to define default sorting rules internally, and Comparator is used to define multiple sorting logic externally. 1.Comparable is an interface implemented by the class itself. It defines the natural order by rewriting the compareTo() method. It is suitable for classes with fixed and most commonly used sorting methods, such as String or Integer. 2. Comparator is an externally defined functional interface, implemented through the compare() method, suitable for situations where multiple sorting methods are required for the same class, the class source code cannot be modified, or the sorting logic is often changed. The difference between the two is that Comparable can only define a sorting logic and needs to modify the class itself, while Compar

How to parse JSON in Java? How to parse JSON in Java? Jul 11, 2025 am 02:18 AM

There are three common ways to parse JSON in Java: use Jackson, Gson, or org.json. 1. Jackson is suitable for most projects, with good performance and comprehensive functions, and supports conversion and annotation mapping between objects and JSON strings; 2. Gson is more suitable for Android projects or lightweight needs, and is simple to use but slightly inferior in handling complex structures and high-performance scenarios; 3.org.json is suitable for simple tasks or small scripts, and is not recommended for large projects because of its lack of flexibility and type safety. The choice should be decided based on actual needs.

Outlook shortcut for new email Outlook shortcut for new email Jul 11, 2025 am 03:25 AM

How to quickly create new emails in Outlook is as follows: 1. The desktop version uses the shortcut key Ctrl Shift M to directly pop up a new email window; 2. The web version can create new emails in one-click by creating a bookmark containing JavaScript (such as javascript:document.querySelector("divrole='button'").click()); 3. Use browser plug-ins (such as Vimium, CrxMouseGestures) to trigger the "New Mail" button; 4. Windows users can also select "New Mail" by right-clicking the Outlook icon of the taskbar

Java method references explained Java method references explained Jul 12, 2025 am 02:59 AM

Method reference is a way to simplify the writing of Lambda expressions in Java, making the code more concise. It is not a new syntax, but a shortcut to Lambda expressions introduced by Java 8, suitable for the context of functional interfaces. The core is to use existing methods directly as implementations of functional interfaces. For example, System.out::println is equivalent to s->System.out.println(s). There are four main forms of method reference: 1. Static method reference (ClassName::staticMethodName); 2. Instance method reference (binding to a specific object, instance::methodName); 3.

Understanding the Java volatile Keyword Usage Understanding the Java volatile Keyword Usage Jul 12, 2025 am 01:50 AM

The volatile keyword in Java often feels a bit abstract, especially for those who are new to concurrent programming. In fact, its function is very clear: to ensure the visibility of variables between multiple threads. That is to say, when one thread modifies the variable value modified by volatile, other threads can see the change immediately. It is not a master key to solve all concurrency problems, but it is very useful in some scenarios. Let’s take a look at how to use it and where it is suitable for use. When do you need to use volatile? The most typical application scenario is the status flag, such as controlling whether the thread continues to run: privatevolatilebooleanrunning=true;

See all articles