`
longgangbai
  • 浏览: 7339671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java Final的复习

 
阅读更多
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 期末 复习题

    Java 期末复习题涵盖了许多Java语言的核心概念,以下是这些题目涉及的关键知识点的详细解析: 1. **Unicode编码**:Java中的`char`类型用于存储Unicode字符,每个`char`占用两个字节,因此可以存储包括中文在内的...

    Java复习——final.doc

    Java复习——final.doc

    java面试复习资料.pdf

    Java面试复习资料涵盖了众多核心知识点,对于准备Java面试的求职者来说是不可或缺的参考资料。以下是一些关键点的详细解析: 1. **面向对象**:Java是一种面向对象的语言,其三大特性是封装、继承和多态。面试中常...

    java 考试复习指南

    【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...

    java期末复习试题.doc

    根据提供的文件信息,我们可以从中提炼...- **final 关键字:** 在Java中,使用`final`关键字可以声明常量,所以选项C是正确的。 以上就是从给定文件中提取并扩展的一些Java知识点,希望对理解和掌握Java编程有所帮助。

    java基础复习资料.pdf

    根据给定的文件内容,我们可以提炼出以下...通过上述分析,我们可以看到,文档的内容虽然由于OCR技术原因,存在一些错误和遗漏,但是仍然覆盖了Java基础知识的多个重要方面,适合用于复习和巩固Java编程的基础概念。

    JAVA期末复习

    ### JAVA期末复习知识点详解 #### 第一章:JAVA的基础特性与源文件管理 - **JAVA的特性** - 面向对象:JAVA是一种完全面向对象的语言,它支持封装、继承、多态等特性。 - 平台独立性:通过Java虚拟机(JVM),JAVA...

    java考试复习试题1.doc

    2. Java 中的 final 类不能被继承,final 方法不能被重写,final 变量不能被重新赋值。 3. Java 中的抽象方法是指在 abstract 类中声明的方法,但不提供实现。 4. Java 中的静态方法可以使用类名作为前缀来调用,...

    Java理论复习

    ### Java理论复习 #### 1. 什么是类?什么是对象? - **定义**:对象是对现实世界中的事物的一种抽象表示,而类则是对这些对象共性的抽象概括。 - **对象**:对象是具体的事物在程序中的表现形式,它是类的实例。...

    JAVA期末的复习提纲

    在准备JAVA期末考试的过程...在复习时,要深入理解这些概念并进行实践,熟悉每种结构的用法,掌握面向对象编程的核心思想,以及Java内存管理和异常处理等高级话题。同时,多做练习题,巩固理论知识,提高实际编程能力。

    JAVA期末复习题 JAVA期末复习题

    接口中的变量默认是 `public static final` 的,这意味着它们是公有的、静态的并且是常量。 以上总结了给定题目中涉及到的主要Java知识点,希望能够帮助读者更好地理解和掌握Java编程语言的基础知识。

    java基础1-8章复习-final.rar

    这份"java基础1-8章复习-final.rar"的压缩包包含了对Java基础知识的深入复习,适合初学者和有一定经验的开发者巩固基础。从提供的文件名来看,我们可以推测这些文件可能是复习资料、示例代码以及可能的一份笔试题。 ...

    java复习资料

    ### Java复习资料知识点详解 #### 一、Java平台选择 - **知识点**: 选择题1考查了Java的不同平台。Java有三个主要平台:Java SE(Standard Edition),Java EE(Enterprise Edition),Java ME(Micro Edition)。...

    JAVA-复习终结java复习资料

    ### JAVA-复习终结java复习资料 #### 一、数组长度属性 在Java中,所有数组都具有一种内置的属性——`length`,该属性用来表示数组中元素的数量。例如,对于一个整型数组`int[] arr = new int[5];`,`arr.length`将...

    java期末复习资料

    【Java期末复习知识点详解】 Java是一种广泛使用的面向对象的编程语言,其期末考试通常涵盖了许多核心概念和技术。以下是一些重要的复习知识点: 1. **字节码文件**:当使用JDK的javac编译器编译Java源程序时,会...

    JAVA考试复习题 有大部分答案

    学习Java时,要熟悉关键字(如`public`, `private`, `protected`, `static`, `final`, `abstract`)和数据类型(如原始类型和引用类型)。 2. **面向对象**:Java是面向对象的语言,包含封装、继承和多态三大特性。...

Global site tag (gtag.js) - Google Analytics