What is the divergence betwixt final, finally together with finalize method is asked to my friend inwards a Java interview amongst ane of the US based Investment bank. Though it was only a telephonic circular interview, he was asked a twain of adept questions e.g. how to avoid deadlock inwards Java, How to get() method of HashMap works together with ane of the puzzles which are based on recursion. In curt final keyword tin live used along amongst variable, method together with degree together with has a dissimilar pregnant for all of them. finally is about other Java keyword which is used inwards Exception treatment along amongst try, catch, throw together with throws. finalize() is a especial method inwards Java which is called past times Garbage Collector earlier reclaiming GC eligible objects. In this Java interview questions article, nosotros volition compare final vs finally vs finalize together with highlight about of import divergence betwixt final, finally together with finalize method inwards Java.
final vs finally vs finalize inwards Java
Class inwards Java. If you lot brand a variable final, you lot tin non modify its value, it volition human activity similar a constant. final variables are initialized at the fourth dimension of creation except inwards the instance of a blank concluding variable which is initialized inwards Constructor. If you lot brand a method concluding inwards Java, you lot tin non override it inwards subclass .
If you lot brand a degree final agency it tin non live sub classed. Making a degree concluding automatically makes all its method concluding together with this is sometimes required due to security reason, This is ane of the reasons Why String is concluding inwards Java. In curt concluding is non related at all amongst either finally or finalize keyword. concluding keyword too helps to write Immutable classes which are critical for designing thread-safe multi-threading organisation together with reducing the total of synchronization. I would advise seeing What is concluding inwards Java for to a greater extent than information most the final keyword.
If you lot brand a degree final agency it tin non live sub classed. Making a degree concluding automatically makes all its method concluding together with this is sometimes required due to security reason, This is ane of the reasons Why String is concluding inwards Java. In curt concluding is non related at all amongst either finally or finalize keyword. concluding keyword too helps to write Immutable classes which are critical for designing thread-safe multi-threading organisation together with reducing the total of synchronization. I would advise seeing What is concluding inwards Java for to a greater extent than information most the final keyword.
Now let's run across What is finally inwards Java? As I said finally is used for exception treatment along amongst try together with catch. As per Java programming language’s rule, for exception handling, you lot at to the lowest degree demand either catch or finally block. finally block has a especial wages over pick out grip of that its guaranteed to live executed despite whether Exception is thrown or not, this makes it, an ideal house to closed organisation resources e.g. InputStream or OutputStream, which is required to free scarce file descriptor. Closing streams, network connection, database connexion inwards a finally block is adept coding exercise inwards Java. By the way from Java vii you lot tin utilisation try amongst resources block to closed resources automatically. Since finally is guaranteed to live executed inwards most cases, it too gives nascence to about tricky Java questions where finally doesn't execute e.g. returning value from a finally block, calling System.exit from endeavor block etc. finally block e'er execute, except inwards the instance of JVM dies i.e. calling System.exit() . Again finally is non related to final or finalize inwards whatever way.
Now let’s run across What is finalize() method, finalize() is called past times Garbage collection thread only earlier collecting eligible Objects. This is the lastly jeopardy for an object to perform whatever cleanup but since it's non guaranteed that whether finalize() volition live called, its bad exercise to occur resources till finalize call. Though you lot tin cook a security cyberspace on finalize past times double checking scarce resources. See 10 points on finalize method to know to a greater extent than most specific points of finalize().
So, final, finally together with finalize all are a dissimilar keyword, they are used for dissimilar purpose. the exclusively similarity betwixt them is that they are a Java programming linguistic communication keyword, other than that final, finalize together with finally are completely dissimilar than each other.
Further Learning
Complete Java Masterclass
Why is multiple inheritance non supported inwards Java?