`
jj356302304
  • 浏览: 715 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

final关键字解析

 
阅读更多

final关键字解析

      final在Java中很常用,它为我们提供了诸如在C语言中定义常量的功能,不仅如此,final还可以让你控制你的成员、方法或者是一个类是 否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也是学习Java时必须要知道和掌握的关键字之一。

 

1.修饰基本类型时,那便是说其值不可变(永远不改变的的编译期常量)

         编译期常量是指在编译器编译时就可以将该常量值带入如何可能用到它的计算式中。可以在编译时作出计算,减轻了运行时的负担,这类常量必须是基本数据类型,在定义时,必须对其赋值。

public class StringTest {
	
	private final int i = 2;
	
	public int upcase(String s){
		//在编译期的时候就已经知道这个返回结果是5,不需要在运行的时候计算
		return i+3;
	}
}

 

 

2.修饰对象变量时,那便是说其引用不可再变。

     一旦引用对象使用final定义,那么表示该引用恒定不变,一旦引用被初始化指向一个对象。就无法再把它改为指向另外一个对象,但是对象自身是可以修改的

对后面一句话“对象自身是可以修改”的,这个很容易理解,引用不变,其他则可变。如下代码

public void testStringBuffer(){
	final StringBuffer sb = new StringBuffer("1");
	sb.append("2");
	sb.append("3");
	//输出结果是123,表明验证了这句话,对象自身是可以变的
	System.out.println(sb.toString());
}

 一旦引用被初始化指向一个对象。就无法再把它改为指向另外一个对象”

public static void main(String[] args) {
	//引用已经被固定了,只能指向how这个堆内存空间
	final String s = "how";
	//如果执向其他堆内存,则编译时会出错
	//s = "old";
}

 

什么时候初始化final常量

final初始化常量有两种方式,

1.在声明的时候初始化其值

2.在构造方法中初始化其值

private final int i;
	
private final int k = 2; 
	
public StringTest(){
	i = 2;
}

 那么这两种初始化的时机有什么区别呢?

在使用上没有什么区别,但是在构造方法中初始化却显的更灵活。如代码

package com.ur.test;

public class StringTest {
	
	private final int i;
	
	public StringTest(){
		i = 1;
	}
	
	public StringTest(int p){
		i = p;
	}
	
	public StringTest(int p, int c){
		i = c;
	}
	
	public static void main(String[] args) {
		//发现常量i却会根据对象不同构造而变化
		new StringTest();//i为1
		new StringTest(2);//i为2
		new StringTest(2, 3);//i为3
	}
}

  

 final参数

你可以接受我,但是不能改变我!(final参数本质)

public void get(final Date time){
	time = new Date();
	//The final local variable time cannot be assigned.
	//It must be blank and not using a compound assignment
}

 可以看到在编译时就提示常量不能改变。

final参数这一特性鼠药会用在匿名函数中

 

final方法

我就是我,谁也别想改变!

使用final方法的原因有两个。

1.把方法锁定,防止任何继承类修改它的含义

2.出于效率的考虑(新版本中可以不用考虑)

 

注意:

在一个类中所有的private方法,都被隐式的被声明为final类,因为子类无法覆盖private方法。

 

 

final类

如果一个类修饰为final,那么它连子类都没有了。

出于这样设计的目的是

1.不希望有任何的类继承我。

 

注意:

在一个类中所有的方法,都被隐式的被声明为final方法

 

 

  • 大小: 299.7 KB
分享到:
评论

相关推荐

    深入解析Java编程中final关键字的作用

    以下是关于final关键字的深入解析: 1. **final类**: 当一个类被声明为final时,这意味着这个类不能被其他类继承。例如: ```java public final class FinalClass {} ``` 这样的设计旨在防止类的扩展,保证类...

    JavaSE之final关键字与成员变量的类型

    【JavaSE之final关键字与成员变量的类型】 在Java编程语言中,`final`关键字扮演着重要的角色,它表示“最终”或“不可改变”的特性。对于初学者来说,理解`final`的关键字用法是掌握JavaSE基础的重要一步。本篇...

    java 关键字解析

    ### Java关键字解析 Java是一种广泛使用的面向对象编程语言,它为开发者提供了丰富的特性和功能,以简化复杂的软件开发过程。Java的关键字是预定义的保留字,在Java编程中具有特殊的含义和用途。本文将深入探讨Java...

    Java关键字解析.pdf

    本文将深入解析几个关键的Java关键字及其用法。 首先,`instanceof`关键字用于判断一个对象是否属于某个类、接口或其子类/实现类。它的基本形式是`boolean result = obj instanceof Class`。需要注意的是,`obj`...

    深入解析Java编程中final关键字的使用

    本篇文章将深入解析final关键字的使用及其在不同场景下的应用。 首先,final变量被视为常量,一旦赋值后就不能再次改变。这在很多情况下用于确保数据的不可变性,提高代码的稳定性和安全性。例如,`final double PI...

    JAVA中的final关键字用法实例详解

    在Java编程语言中,`final`关键字扮演着重要的角色,它是用来声明不可变性的一种机制。下面我们将详细探讨`final`关键字在修饰数据、方法和类时的不同用法。 首先,我们来看`final`关键字如何修饰数据。在Java中,`...

    小议Java中final关键字使用时的注意点

    - `static final`变量被称为常量,它们在编译时被解析并存储在方法区,通常全大写表示,如`public static final int PI = 3.14159;` 4. **初始化与内存分配**: - **final 变量的初始化**:final变量可以在声明时...

    Java关键字大全 Java关键字大全

    以上只是 Java 关键字中的一部分,还有许多其他关键字,如 `do`, `else`, `extends`, `final`, `finally`, `float`, `for`, `if`, `implements`, `import`, `instanceof`, `int`, `interface`, `long`, `native`, `...

    java中的常见关键字解析

    本篇文章将深入解析Java中四个重要的关键字:final、static、super和this。 首先,我们来看`final`关键字。`final`在Java中扮演着不可变的角色。它可以用在三个不同的上下文中: 1. 修饰类:如果一个类被声明为`...

    Java关键字及其作用

    本文将详细解析 Java 中的访问控制关键字,以及类、方法和变量修饰符。 首先,我们来看看访问控制关键字: 1. **private**:私有的。private 关键字用于限制对类成员(类、方法、变量)的访问,使得它们只能在声明...

    关于Final的用法

    关于Java中`final`关键字的深入解析及其应用 在Java编程语言中,`final`关键字是一种重要的修饰符,用于限定变量、方法以及类的行为,确保它们的特定特性不会被更改或者覆盖。本文将从以下几个方面详细阐述`final`...

    java工程师面试总结.docx

    本文档总结了Java工程师面试中的一些常见问题和知识点,涵盖了Spring、Java基础知识、final关键字、JQuery等方面。 一、@Autowired和@Resource的区别 @Resource和@Autowired都是Spring框架中用于自动装配Bean的...

    (完整版)二期JAVA语言及数据库笔试题目答案解析.doc

    Java 语言及数据库笔试题目答案解析 本文档提供了 Java 语言及数据库笔试题目的答案解析,涵盖了 Java 面向对象编程、Java 编程实践、TSQL 数据库编程等方面的...知识点:Java 变量定义、static 关键字、final 关键字

    110-140上传请查阅,谢谢!

    2. final关键字:文件"133-虚拟机-33-finalize_调用原理"讨论了final关键字与对象的生命周期。final关键字不仅可以修饰变量,还可以修饰方法和类,防止其被重写或继承。同时,final对象的finalize()方法是在垃圾回收...

    java编程全部关键字解释

    Java编程语言的关键字是语言的核心组成部分,它们具有特殊含义,被Java编译器解析和执行。下面我们将逐一探讨这些关键字的详细解释。 1. `abstract`:`abstract` 关键字用于声明抽象类和抽象方法。抽象类不能直接...

    java中final与static的用法

    下面将详细解析这两个关键字的用法及其在Java中的重要性。 ### 一、`final`关键字 `final`关键字在Java中有多种用途,它可以用来修饰类、方法和变量,其主要目的是确保被修饰的对象具有不可变性或只读性。 #### 1...

    java中final类型等的应用

    根据提供的文件信息,我们可以...这些知识点涵盖了Java中的字符编码(特别是UTF-16及其变体)、字符串的操作以及final关键字的使用等方面。通过对这些知识点的学习,可以帮助我们更好地理解和应用Java语言的相关特性。

    驱动智能选择v2.2 Final,菜单,设备关键字用户自定义,注册表批量写入

    首先,我们来解析一下“菜单”功能。这个菜单不仅包含了一般软件的操作选项,如打开、关闭、设置等,还特设了驱动管理的相关功能,如扫描硬件、查找更新、安装驱动等。用户可以根据菜单中的提示,轻松地对电脑上的...

    Java中的static关键字

    Java 中的 static 关键字 ...在 Java 中,类装载器把一个类装入 Java 虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的。

    Java的关键字与保留字

    在编程语言中,关键字是预定义的具有特殊含义的标识符,它们在编译时被解析器识别并执行特定的功能;而保留字则是语言设计者为未来版本预留的标识符,尽管当前版本未使用,但为了兼容性和一致性,程序员应避免将其...

Global site tag (gtag.js) - Google Analytics