package com;
/**
*如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量;
*如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,这里需要提醒大家注意的是,
*不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象。
*在第二种情况下,final的含义与第一种情况相同。
*实际上对于前两种情况,有一种更贴切的表述final的含义的描述,那就是,如果一个变量或方法参数被final修饰,
*就表示它只能被赋值一次,但是JAVA虚拟机为变量设定的默认值不记作一次赋值。
被final修饰的变量必须被初始化。初始化的方式有以下几种:
1. 在定义的时候初始化。
2. final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。
3. 静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。
4. final变量还可以在类的构造器中初始化,但是静态final变量不可以。
可以发现final变量(常量)和静态final变量(静态常量)未被初始化时,编译会报错。
用final修饰的变量(常量)比非final的变量(普通变量)拥有更高的效率,因此我们在实际编程中应该尽可
能多的用常量来代替普通变量,这也是一个很好的编程习惯。
这里需要特殊说明的是,具有private访问权限的方法也可以增加final修饰,但是由于子类无法继承private方法,
因此也无法重写它。编译器在处理private方法时,是按照final方法来对待的,这样可以提高该方法被调用时的效率。
不过子类仍然可以定义同父类中的private方法具有同样结构的方法,但是这并不会产生重写的效果,而且它们之间也
不存在必然联系.final也不能用来修饰接口。 final的类的所有方法都不能被重写,但这并不表示final的类的属性
(变量)值也是不可改变的,要想做到final类的属性值不可改变,必须给它增加final修饰,
*
* @author longgangbai
*
*
*/
public class FinalTest {
// 在定义时初始化
public final int A = 10;
public final int B;
// 在初始化块中初始化
{
B = 20;
}
// 非__________静态final变量不能在静态初始化块中初始化
// public final int C;
// static {
// C = 30;
// }
// 静态常量,在定义时初始化
public static final int STATIC_D = 40;
public static final int STATIC_E;
// 静态常量,在静态初始化块中初始化
static {
STATIC_E = 50;
}
// 静态变量不能在初始化块中初始化
// public static final int STATIC_F;
// {
// STATIC_F = 60;
// }
public final int G;
// 静态final变量不可以在构造器中初始化
// public static final int STATIC_H;
// 在构造器中初始化
public FinalTest() {
G = 70;
// 静态final变量不可以在构造器中初始化
// STATIC_H = 80;
// 给final的变量第二次赋值时,编译会报错
// A = 99;
// STATIC_D = 99;
}
// final变量未被初始化,编译时就会报错
// public final int I;
// 静态final变量未被初始化,编译时就会报错
// public static final int STATIC_J;
}
分享到:
相关推荐
Java 期末复习题涵盖了许多Java语言的核心概念,以下是这些题目涉及的关键知识点的详细解析: 1. **Unicode编码**:Java中的`char`类型用于存储Unicode字符,每个`char`占用两个字节,因此可以存储包括中文在内的...
Java复习——final.doc
Java面试复习资料涵盖了众多核心知识点,对于准备Java面试的求职者来说是不可或缺的参考资料。以下是一些关键点的详细解析: 1. **面向对象**:Java是一种面向对象的语言,其三大特性是封装、继承和多态。面试中常...
【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...
根据提供的文件信息,我们可以从中提炼...- **final 关键字:** 在Java中,使用`final`关键字可以声明常量,所以选项C是正确的。 以上就是从给定文件中提取并扩展的一些Java知识点,希望对理解和掌握Java编程有所帮助。
根据给定的文件内容,我们可以提炼出以下...通过上述分析,我们可以看到,文档的内容虽然由于OCR技术原因,存在一些错误和遗漏,但是仍然覆盖了Java基础知识的多个重要方面,适合用于复习和巩固Java编程的基础概念。
### JAVA期末复习知识点详解 #### 第一章:JAVA的基础特性与源文件管理 - **JAVA的特性** - 面向对象:JAVA是一种完全面向对象的语言,它支持封装、继承、多态等特性。 - 平台独立性:通过Java虚拟机(JVM),JAVA...
2. Java 中的 final 类不能被继承,final 方法不能被重写,final 变量不能被重新赋值。 3. Java 中的抽象方法是指在 abstract 类中声明的方法,但不提供实现。 4. Java 中的静态方法可以使用类名作为前缀来调用,...
### Java理论复习 #### 1. 什么是类?什么是对象? - **定义**:对象是对现实世界中的事物的一种抽象表示,而类则是对这些对象共性的抽象概括。 - **对象**:对象是具体的事物在程序中的表现形式,它是类的实例。...
在准备JAVA期末考试的过程...在复习时,要深入理解这些概念并进行实践,熟悉每种结构的用法,掌握面向对象编程的核心思想,以及Java内存管理和异常处理等高级话题。同时,多做练习题,巩固理论知识,提高实际编程能力。
接口中的变量默认是 `public static final` 的,这意味着它们是公有的、静态的并且是常量。 以上总结了给定题目中涉及到的主要Java知识点,希望能够帮助读者更好地理解和掌握Java编程语言的基础知识。
这份"java基础1-8章复习-final.rar"的压缩包包含了对Java基础知识的深入复习,适合初学者和有一定经验的开发者巩固基础。从提供的文件名来看,我们可以推测这些文件可能是复习资料、示例代码以及可能的一份笔试题。 ...
### Java复习资料知识点详解 #### 一、Java平台选择 - **知识点**: 选择题1考查了Java的不同平台。Java有三个主要平台:Java SE(Standard Edition),Java EE(Enterprise Edition),Java ME(Micro Edition)。...
### JAVA-复习终结java复习资料 #### 一、数组长度属性 在Java中,所有数组都具有一种内置的属性——`length`,该属性用来表示数组中元素的数量。例如,对于一个整型数组`int[] arr = new int[5];`,`arr.length`将...
【Java期末复习知识点详解】 Java是一种广泛使用的面向对象的编程语言,其期末考试通常涵盖了许多核心概念和技术。以下是一些重要的复习知识点: 1. **字节码文件**:当使用JDK的javac编译器编译Java源程序时,会...
学习Java时,要熟悉关键字(如`public`, `private`, `protected`, `static`, `final`, `abstract`)和数据类型(如原始类型和引用类型)。 2. **面向对象**:Java是面向对象的语言,包含封装、继承和多态三大特性。...