我是靠谱客的博主 留胡子母鸡,最近开发中收集的这篇文章主要介绍【Java 面试合集】final 以及finally 不同final 以及finally 不同,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

final 以及finally 不同

1. 概述

嗨,大家好【Java 面试合集】又来了。今天给大家分享的主题是final 以及finally 不同.
很简单,但是确实很细节哦,好了废话不多说,让我们开始吧

2. final

首先我们要知道final 是一个修饰符,可以修饰属性,方法,类等

2.1 修饰成员属性

  • 修饰基本数据类型后,不能再次修改
  • 修饰引用数据类型后,不能修引用。但是可以修改对象内容

基本数据类型

public class Test001 {
	final int age = 10;
    age = 20; // 不能进行修改
}

一旦使用final 修饰基本数据类型后,不能再次修改。

在这里插入图片描述

引用数据类型

public class Test001 {
    final Person p = new Person();

    public void test002() {
        p = new Person(); // 报错。
        p.name = "20"; // 但是可以这样赋值
    }
}

2.2 修饰类

使用修饰符final 修饰类后,类不能被继承。

final class Parent001 {
}

public class Test002 extends Parent001 {
}

在这里插入图片描述

2.3 修饰方法

使用修饰符final 修饰方法后,方法不能被重写

class Parent001 {
    public final void test001() {

    }
}

public class Test002 extends Parent001 {
    
    public void test001() {

    }
}

在这里插入图片描述

2.4 修饰参数列表

修饰的参数列表,跟修饰成员属性保持一致的

public class Test003 {
    public static void main(String[] args) {
        test001(1, 2);
    }
    public static void test001(final int a, int b) {
        a = 2; // 不能重新赋值
        b = 3;
    }
}

2.5 常用方式

一般跟static 结合使用。用来给全系统提供常用。

public final class Math {
	public static final double PI = 3.14159265358979323846;
}

3. finally

  • 其实是try catch finally 关键字。其大概的含义是:无论是否异常,都会执行finally
  • finally 代码块 会在try 代码块的return之前执行。
  • 如果finally代码块进行返回了,try 代码块中就无法返回了

实例1

public class Test004 {
    public static void main(String[] args) {
        System.out.println(test001());
    }

    public static String test001() {
        try {
            System.out.println("test001-1");
            return "test001-1-r";
        } finally {
            System.out.println("test001-2");
            return "test001-2-r";
        }
    }
}

上述代码的打印结果如下:

# test001-1
# test001-2
# test001-2-r

通过上述示例,如果finally代码块返回值后,try 代码块就不会返回了

实例2

public class Test004 {
    public static void main(String[] args) {
        System.out.println(test001());
    }

    public static String test001() {
        try {
            System.out.println("test001-1");
            return "test001-1-r";
        } finally {
            System.out.println("test001-2");
        }
    }
}

上述代码打印结果如下:

// test001-1
// test001-2
// test001-1-r

上述示例代码说明:如果try代码块正常的话,finally 代码块是在return 之前执行的。

4. 总结

其实final 以及finally除了书写相似外,毛关系没有

最后

以上就是留胡子母鸡为你收集整理的【Java 面试合集】final 以及finally 不同final 以及finally 不同的全部内容,希望文章能够帮你解决【Java 面试合集】final 以及finally 不同final 以及finally 不同所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部