Dive into Java Final
In this article, the editor will introduce Java Final to everyone. Friends in need can refer to it
The JAVA keyword final is used to modify data, methods or classes, which usually means "cannot be changed" , data cannot be changed, methods cannot be overridden, and classes cannot be inherited. There are generally two reasons for using final: design and efficiency. As the JAVA version is updated, some efficiency issues can be handled by the compiler and JVM. Therefore, using final to solve efficiency problems is not so important.
Final modifier is mostly used in the fields of primitive data types or immutable classes (if all methods in the class will not change its object, this class is an immutable class. String is an immutable class).
[final data]
There are two main situations in which the Final keyword is used to modify data:
1. Compile-time constants
2. Run-time initialization The value of
For compile-time constants, refers to a field that is both final and static (according to convention, compile-time constants are all named with uppercase letters and use underscores to separate each word), which only occupies a section that cannot Changed storage space. The compiler can substitute compile-time constants into any calculation formula that may use it. That is to say, the calculation formula can be executed at compile time, which relatively reduces the runtime burden. A compile-time constant must have a value assigned to it when it is defined (not necessarily a basic type).
The value initialized at runtime. For basic types, final makes the value unchangeable; for object references, final makes the reference unchangeable, that is, it cannot be changed to point to another object. However, the object itself cannot be changed. Can be modified (applies to arrays, which are also objects).
The code is as follows:
public class javaFinalData{ private static final String TESTD = "test"; public static final String TESTE = "test"; public static final String[] TESTF = {"1","2"}; //非基本类型 private static final String[] TESTG = new String[2]; public static void main(String args[]){ final int testA = 1; final String testB = "test"; final int[] testC = {1,1,2,}; System.out.println(testC[1]); testC[1] = 123; System.out.println(testC[1]); } }
[Unassigned final field]
JAVA allows the generation of unassigned final fields, but they must be in the definition of the field Assign the final field at or in each constructor (as many constructors as there are), make sure it is initialized before use. In this way, final can be used more flexibly. In the same class, different values can be assigned to different objects while maintaining immutable characteristics.
The code is as follows:
public class javaBlankFinal{ private final int blank; public javaBlankFinal(){ blank = 2011; } public javaBlankFinal(int temp){ blank = 2012; } public javaBlankFinal(String temp){ blank = 2014; } public static void main(String args[]){ new javaBlankFinal(); } }
[final method]
There are two reasons for using the final method: one is to lock the method to prevent it from being overwritten and ensure that it is The method behavior in inheritance remains unchanged; the second is to convert method calls into inlining calls (inlining) to reduce the cost of method calls. However, in recent versions, the JVM can optimize itself, so there is no need to use final methods to deal with efficiency issues.
Regarding final methods, there is one more thing to note. All private methods in the class are implicitly designated as final methods (you can also add final modification to them, but it is meaningless). When you try to override a private method, the compiler does not report an error, but in fact you do not overwrite the method, you just generate a new method. Because the private method cannot be accessed by external classes, of course it cannot be overridden.
Use the @Override annotation to prevent the above problems. As shown in the program:
The code is as follows:
class finalFunction{ private void finalFunctionA(){ System.out.println("finalFunctionA"); } private final void finalFunctionB(){ System.out.println("finalFunctionB"); } final void finalFunctionC(){ System.out.println("finalFunctionC"); } void functionD(){} } class overrideFinalFunction extends finalFunction{ //@Override 添加@Override注解可以识别是否是override public void finalFunctionA(){ System.out.println("override finalFunctionA"); } public final void finalFunctionB(){ System.out.println("override finalFunctionB"); } //final void finalFunctionC(){} //Cannot override the final method from finalFunction @Override void functionD(){} //真正的override方法 } public class javaFinalFunction extends finalFunction{ public static void main(String args[]){ finalFunction ff = new finalFunction(); //ff.finalFunctionA(); //无法调用private方法 //ff.finalFunctionB(); overrideFinalFunction off = new overrideFinalFunction(); off.finalFunctionA(); //public方法 off.finalFunctionB(); } }
[final class]
Using the final class is generally for design reasons and is not allowed. Classes are inherited. This ensures that the behavior of the class will not change, and may also avoid some security risks. All methods in the Final class are implicitly designated as final methods and therefore cannot be overridden (because the final class prohibits inheritance, methods in its class cannot be overridden). In the Java core API, there are many examples of applying final, such as java.lang.String. Specify final for the String class to prevent overwriting methods such as length().
For final fields, even if a class is declared final, the fields in the class will not automatically become final fields.
The code is as follows:
final class finalClass{ int testA = 2011; } //class extendFinalClassextends finalClass{} //can not extendthe final class finalClass public class javaFinalClass{ public static void main(String args[]){ finalClass fc = new finalClass(); System.out.println(fc.testA); fc.testA = 2012; System.out.println(fc.testA); } }
The above is the detailed content of Dive into Java Final. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

PHP is suitable for web development and content management systems, and Python is suitable for data science, machine learning and automation scripts. 1.PHP performs well in building fast and scalable websites and applications and is commonly used in CMS such as WordPress. 2. Python has performed outstandingly in the fields of data science and machine learning, with rich libraries such as NumPy and TensorFlow.
