final的含义?

final:java中的关键字,意为“终态的”或者“无法改变的”。可用来修饰类、变量、方法。


变量(成员变量、静态变量、局部变量)

注意:

1、final变量即为常量,通常常量名大写。

2、final成员变量必须在声明时初始化或在构造器中初始化。

3、静态final成员变量必须在声明时初始化。

4、局部变量必须在声明时赋值。

5、final变量赋值后不能被修改。

6、final修饰方法中的参数时,参数在方法体中不能重新赋值。

7、接口中的变量可以不用明确的声明为final,因为变量默认为public static final。

代码:

public class ClassA {
public final String S1 = "this is S1 in ClassA";// 成员变量,声明时初始化
public final String S2;// 成员变量,在构造器中初始化
public static final String S3 = "this is S3 in ClassA";// 静态变量 public ClassA() {
S2 = "this is S2 in ClassA";
} public String method1() {
final String S = "this is method1 in ClassA";// 局部变量
return S;
} public String method2(final String S) {// final修饰方法中的参数
return S;
}
}

测试1:

public class MainClass {
public static void main(String[] args) {
ClassA a1 = new ClassA();
System.out.println(a1.S1);// this is S1 in ClassA
System.out.println(a1.S2);// this is S2 in ClassA
System.out.println(a1.S3);// this is S3 in ClassA
System.out.println(a1.method1());// this is method1 in ClassA
System.out.println(a1.method2("test"));// test
}
}

方法

注意:

1、final修饰的方法不能被子类重写。

2、final不能用来修饰抽象方法。

代码:

public class ClassA {
public final String method1() {
return "this is method1 in ClassA";
}
}

测试2:

public class MainClass {
public static void main(String[] args) {
ClassA a1 = new ClassA();
System.out.println(a1.method1());// this is method1 in ClassA
}
}

注意:

1、final修饰的类不能被继承。

2、final不能修饰抽象类和接口。

代码:

public final  class ClassA {
public String s1 = "this is s1 in ClassA";
}

测试3:

public class MainClass {
public static void main(String[] args) {
ClassA a1 = new ClassA();
System.out.println(a1.s1);// this is s1 in ClassA
}
}

final详解的更多相关文章

  1. 11、final详解

    1.final修饰成员变量 即该成员被修饰为常量,意味着不可修改. 对于值类型表示值不可变:对于引用类型表示地址不可变 其初始化可以在三个地方 ①:定义时直接赋值 ②:构造函数 ③:代码块{}或者静态 ...

  2. java关键字native、static、final详解

    native: native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中.Java语言本身不能对操作系统底层进行访问和操作,但是可 ...

  3. java 关键字final static native详解

    java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...

  4. 最强Java并发编程详解:知识点梳理,BAT面试题等

    本文原创更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. 知识体系系统性梳理 Java 并发之基础 A. Java进阶 - Java 并发之基础:首先全局的了解并发的知识体系,同时了解 ...

  5. 多线程之 Final变量 详解

    原文: http://www.tuicool.com/articles/2Yjmqy 并发编程网:http://ifeve.com/java-memory-model/ 总结: Final 变量在并发 ...

  6. java提高篇(十)-----详解匿名内部类 ,形参为什么要用final

    在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...

  7. “全栈2019”Java第五十一章:继承与final关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. abstract关键字、final关键字、static关键字、访问修饰符详解

     abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:

  9. 详解 final 和 static

    在我们上一篇博文中提到了 fianl 这个关键字,对于这个关键字,本人在初学时也耗费了极大地心血,甚至和师兄进行了激烈的讨论,并且,在我们讨论.尝试 以及 翻阅各种资料,最终得出了合适.易懂的解释. ...

随机推荐

  1. 【坑】解决maven管理SSM中mybatis的mapper文件扫描失败的问题

    文章目录 前言 改进方式来替换原始的使用方式 后记 好久没有写博客了,11月底来到公司实习,上个月写个小demo,趁此回顾下SSM,今天将最近的积累记录下: 前言 在学习 mybatis 的时候,都知 ...

  2. PHP和Memcached - Memcached的安装

    1.现有扩展对比   memcache memcached 实现方式 原生 局域libmemcached的类库,性能高 编程方式 面向过程.对象 面向对象 CAS命令 NO YES php7 NO Y ...

  3. python中检测某个变量是否有定义

    目录 第一种方法使用内置函数locals() 第二种方法使用内置函数dir() 第三种方法使用内置函数vars() 第一种方法使用内置函数locals() 'testvar' in locals(). ...

  4. CentOS 7.X 静默安装Oracle 12C数据库

    环境 System : CentOS 7.x jrxxfwb-zrgldb://> uname -a Linux jrxxfwb-zrgldb 3.10.0-693.17.1.el7.x86_6 ...

  5. Sonya and Bitwise OR CodeForces - 1004F (线段树,分治)

    大意: 给定序列$a$, 给定整数$x$. 两种操作(1)单点修改 (2)给定区间$[l,r]$,求有多少子区间满足位或和不少于$x$. 假设不带修改. 固定右端点, 合法区间关于左端点单调的. 可以 ...

  6. Base64编码为什么会使数据量变大

    现在工作中把视频转成base64发现数据量过大无法下载. 1.为什么base64编码会使数据量变大呢? Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据 ...

  7. (八)装配Bean(2)

    二.在Java类中进行显式的装配 显式配置有两种: 1. 一种是在java(本文讲解)   2. 另一种是xml配置文件(第一章有讲) 案例一: 使用java显式装配+@autowired自动装配的方 ...

  8. Swagger 实践 <一>

    参考 :https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-nswag?view=aspnetcor ...

  9. 创建多线程时,为何创建后需要Sleep?

    后面的线程用到了前面线程初始的结构,sleep一下只是做到了使前一个线程初始化完成后后一个线程才开始运行.但这样不严格,需要同步机制.在么多个线程都要用的数据结构不要放到子线程内部去初始化,程序启动时 ...

  10. Java后端HttpClient Post提交文件流 及服务端接收文件流

    客户端将文件转换为流发送: 依赖的包: <dependency> <groupId>org.apache.httpcomponents</groupId> < ...