Home  >  Article  >  Java  >  How much do you know about the Java final keyword?

How much do you know about the Java final keyword?

坏嘻嘻
坏嘻嘻Original
2018-09-14 10:35:121346browse

For beginners, Tomcat is a very good choice to execute JSP and Servlet. You can also use Resin, both of which cost nothing. Resin's support for Xml is very good.

1. FINAL

This is the main purpose of Final, which means that it is equivalent to the Const of C/C, that is, the member is modified as a constant, which means that it cannot be modified. For example, PI and E in the java.lang.Math class are final members, and their values ​​are 3.141592653589793 and 2.718281828459045.

2. Final

of the modifier or object. In Java, we cannot let the object be modified to final, but can only modify the reference of the object, which means that even if you write public final A a = new A(); In fact, the data of the object pointed to by a can still be modified. What cannot be modified is the reference value of a itself, that is, you cannot reassign a. The same situation occurs in arrays, such as public final int[] a = {1, 2, 3, 4, 5}. In fact, the value in a is modifiable, that is, a[0] = 3 can be written. According to current understanding, the data in the array in Java cannot be modified to be unmodifiable, but C/C can.

3. The final of the modified method is very different from the const used to modify the member object in C/C. First of all, the final meaning of a modified method is not "unmodifiable", but means that the method cannot be redefined by inherited members. (Note that what is said here cannot be redefined does not mean that subclasses must not define methods with the same name. If the method of the parent class is a private type, the subclass is allowed to define the method. What is meant here is that it cannot be redefined. By rewriting the method, the polymorphism of method overriding can be realized. If you do not want the overriding method situation like A a = new B(); a.f(); to occur)

Example:

public class A {
    // final方法f
    public final void f() {
       System.out.println("类A中的final方法f被调用了");
    }
}
public class B extends A {
    // 编译错误!父类的f方法是final类型,不可重写!
    //! public void f() {
    //!     System.out.println("类B中的方法f被调用了");
    //! }
}

In addition, when a method is modified as a final method, it means that the compiler may load the method inline (inline). The so-called inline method means that the compiler does not need to call a function in the usual way. To call the method, instead, directly copy the code in the method to the original code after certain modifications (insert the method body directly into the calling point instead of making a method call). This can make the code execute faster (because the overhead of calling the function is omitted), such as calling arr.length() in int[] arr = new int[3], etc.

On the other hand, private methods are also implicitly modified as final by the compiler, which means there is no difference between private final void f() and private void f().

4. Final

of the modified class. When a class is modified as Final, its meaning is clear, that is, this class is not allowed to be inherited, that is, this class is "absolutely" , any operation that inherits from it will end in a compilation error. This also highlights the reason why Java uses final instead of const as identifiers. (Member variables may not be final, and member methods may be final directly)

Example:

       public final class A {
}
// 编译错误!A是final类型,不可被继承!
//!public class B extends A{
//!}

5. Parameter final

Make final the object parameters Grooming. It is thought that the object variable is passed its reference, which is modified to prevent unintentional changes during the calling process.

Related recommendations:

JAVA/JSP Learning Series Three_php Basics

JAVA/JSP Learning Series One_php Basics

The above is the detailed content of How much do you know about the Java final keyword?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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