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. plsql中文乱码 显示问号

    输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为简体中文 解决方案: 新增环境变量 变量名: NLS_LANG 变量值: SIMPLI ...

  2. Linux (x86) Exploit 开发系列教程之二(整数溢出)

    (1)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> #include <stdlib.h> void s ...

  3. python-django-天天生鲜项目

    1 需求分析 github源码:https://www.github.com/wangyingchuang/dailyfresh 1.1  用户模块 1) 注册页 l  注册时校验用户名是否已被注册. ...

  4. 20191030-带返回值的回溯算法Leetcode解数独

    题目描述 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔 ...

  5. 模糊查询库的存储过程(SQLServer)

    --查询带有自己需要内容的存储过程 SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROU ...

  6. asp.net core-7.在Core Mvc中使用Options

    1,添加asp.net core mvc应用程序 2,添加Controllers控制器文件夹,Views视图文件夹 然后在Startup类中ConfigureServices方法中注册一下servic ...

  7. Intercity Travelling CodeForces - 1009E (组合计数)

    大意: 有一段$n$千米的路, 每一次走$1$千米, 每走完一次可以休息一次, 每连续走$x$次, 消耗$a[1]+...+a[x]$的能量. 休息随机, 求消耗能量的期望$\times 2^{n-1 ...

  8. redis哈希表数据类型键的设置

    命令名称:hset 语法:hset key field value 功能: 1)将哈希表key中的域field的值设为value. 2)如果key不存在,一个新的哈希表被创建并进行hset操作. 3) ...

  9. SQL查询oracle数据库最近备份情况

    需求,查询RMAN备份情况,通过视图进行查询 SQL> //,) input_g, round(OUTPUT_BYTES///,) output_g order by ; SID OUTPUT_ ...

  10. Vue绑定的table页面在Chrome浏览器左右抖动

    现象: 今天Chrome浏览器升级到最新版本(75.0.3770.100),突然发现之前vue页面只要绑定了el-table标签的,都在左右抖动,抖动得眼睛都花了,百度上找半天也没有遇到相同问题的人, ...