`

final用法总结

阅读更多

第一 final修饰类

Final修饰的类没有子类,因为它不能被继承,例如java.lang.String类。Final类的所有方法都是final方法。

注意:final不能跟abstract关键字连用,因为重现的类或者方法必须被继承和覆盖才有意义。

第二 final修饰方法

Final方法可以被子类继承,但是不能被子类重写。有人说,父类的private方法是final方法,不过我不这么认为。因为,父类的private方法可以被子类继承,也能被子类覆盖。

第三 final修饰属性

Final属性属于常量,只能被初始化一次,之后不能改变。初始化的方式有两种:

1在声明时初始化

class Test{
   final int age = 1;
}

 

2在构造方法中初始化

 

class Test{
   final int age;
   Father(){
      age = 1;
   }
}

 

如果final修饰的是个引用变量,如StringBuffer,可以通过调用对象的方法、设置属性等改变其值。但是引用变量本身不能变。示例如下:

//测试类
class Test{
   public final StringBuffer sb = new StringBuffer("这是第一个字符串");
   public String appendString(String str){
      return this.sb.append(str).toString();
   }
}
//演示类
class Demo{
   public void mytest(){
      Test t = new Test();
     
      //错误,因为它对属性sb又一次赋值了
      t.sb = "赋值为新字符串";
      //正确,以为它并没有改变sb的引用地址
      t.sb.append("添加点东西");
      //正确,理由同上
      t.appendString("又添了一点东西");
   }
}

 

第四 final修饰局部变量

Final局部变量,例如,在一个函数中声明的一个局部变量,JVM会在程序的栈内存中为该变量开辟空间。而堆内存是由GC(垃圾回收器)管理的,所以当函数结束时,该变量依然存在,可以被其他线程或程序段使用,不至于出现空指针异常。这个用法在多线程、定时器和内部类中较为常见。例如:

import java.util.Timer;
import java.util.TimerTask;

public class FinalTest {
	   public  static void test(){
	      final Timer timer = new Timer();
	      final int count = 1;
	      timer.schedule(new TimerTask(){
		        @Override
		        public void run(){
		        	System.out.println("2,test方法,输出count=="+count);
		           //....
		           //....
		           //这一句使用了timer变量
		           timer.cancel();
		        }
		      },1000,2000);
	   }
	   public static void main(String[] args) {
		   FinalTest.test();
		   System.out.println("1,这句话应该在test方法之后运行");
	   }
}

 运行结果是:

1,这句话应该在test方法之后运行

 

2,test方法,输出count==1

第五 final修饰方法参数

 

Final参数跟final属性差不多,都是不能更改其值。但是如果参数是引用变量的话可以设置其属性和调用其方法。

1
2
分享到:
评论
2 楼 forestqqqq 2013-07-03  
406657836 写道
而占栈内存是由GC(垃圾回收器)管理的?
栈内存随着 方法的压栈 申请 出栈 释放。gc是管理的堆内存和方法区内存!
父类的private方法可以被子类继承?
private方法是对子类屏蔽的,就相当于没有一样,所以是可以取一样的方法名,也谈不上重写。

是,不是栈内存,写错了,应该是对内存。
1 楼 406657836 2013-07-03  
而占栈内存是由GC(垃圾回收器)管理的?
栈内存随着 方法的压栈 申请 出栈 释放。gc是管理的堆内存和方法区内存!
父类的private方法可以被子类继承?
private方法是对子类屏蔽的,就相当于没有一样,所以是可以取一样的方法名,也谈不上重写。

相关推荐

    Java关键字final、static使用总结

    本文将详细总结 final 和 static 的使用方法和限制。 一、final 关键字 final 关键字可以用来修饰类、方法、变量等,它的主要作用是表明某个东西是“不可改变”的。下面是 final 关键字的使用方法和限制: 1、...

    final关键字和static_用法

    正确地使用`final`可以大大增强代码的可靠性和性能。 ### Java中的static关键字详解 #### 一、static的概述 `static`关键字在Java中主要用于创建静态成员,包括静态变量和静态方法。与普通成员不同,静态成员属于...

    java中final关键字和static关键字详细用法

    总结一下,`final`关键字用于防止继承、方法重写和变量值的改变,以确保代码的稳定性和设计意图。`static`关键字则用于定义类级别的成员,使其独立于对象实例存在,提高代码的复用性和效率。理解和熟练运用这两个...

    java中final与static的用法

    `final`修饰的方法不能在子类中被重写,确保了方法实现的一致性和安全性。这对于那些不应被修改的核心算法或者安全相关的操作尤其有用。 示例: ```java public final void display() { System.out.println("This ...

    Java中static、this、super、final用法

    ### Java中static、this、super、final用法详解 #### 一、static关键字 `static`关键字在Java中主要用于声明类成员(变量或方法)为静态成员。这意味着这些成员不属于任何特定的对象实例,而是属于整个类本身。因此...

    Java中static、this、super、final用法简谈

    总结起来,`static`、`this`、`super`和`final`是Java中用于控制类、对象和继承的关键字,它们帮助开发者创建健壮、可维护的代码。理解并熟练运用这些关键字是Java程序员必备的技能。在实际开发中,根据具体需求灵活...

    java中final和static的总结

    在Java编程语言中,`final` 和 `static` 是两个非常重要的关键字,它们分别具有不同的含义和用法,但都对代码的结构和行为产生深远影响。本文将深入探讨这两个关键字,并结合实际示例来解释它们的应用场景。 首先,...

    final用法详解

    ### Final用法详解 #### 一、Final Constants(最终常量) 最终常量是指那些一旦被定义就不能再改变其值的变量。它们通常用于表示不会发生变化的值,比如圆周率π。在Java中,使用`final`关键字来声明一个最终常量...

    static、final、abstract和interface使用总结

    在Java编程语言中,`static`、`final`、`abstract`和`...当我们希望限制类的继承或确保方法不被重写时,可以使用final;当需要定义类的静态属性或方法时,使用static;而抽象类和抽象方法则用于构建类的继承层次结构。

    Java中final的深度剖析

    总结来说,final关键字在Java编程中扮演了多种角色,从确保常量的不变性,到防止方法重写,再到优化性能,它都发挥着至关重要的作用。合理利用final可以提高代码质量,减少逻辑错误,增强代码的可预测性和可维护性。

    final类的适应实例

    Java中final类的简单使用,并对Java关键字的使用做出了总结

    Java中final关键字的用法总结

    - 当方法参数使用final修饰时,意味着在方法体内不能改变该参数的值。对于基本类型,这限制了参数值的变更;对于引用类型,它阻止了参数引用指向其他对象,但允许修改引用对象的内容。final参数主要用于防止方法...

    javafinal和static总结.docx

    本文将详细介绍 final 和 static 关键字的使用方法和注意事项。 一、final 关键字 final 关键字在 Java 中有多种用途,包括修饰类、方法和变量。 1. final 类 final 类是无法被继承的,final 类中的方法默认是 ...

    final修饰类

    在Java编程语言中,`final`关键字有着重要的作用,它能用于修饰类、方法和变量,以限制它们的使用方式。下面将详细解释`final`修饰类、方法和变量的具体含义及其应用场景。 **final 修饰类** `final`修饰类的作用...

    FinalData数据修复

    本篇文章将深入探讨FinalData数据修复的核心原理、功能、使用方法以及注意事项。 一、FinalData概述 FinalData是由Grubin Software开发的一款专业级的数据恢复工具,它的主要功能是扫描硬盘、USB驱动器、SD卡等存储...

    Java中final的用法.doc

    总结来说,`final`关键字在Java中扮演了多种角色,包括创建不可变变量、常量、对象和数组,确保方法和类的不可覆盖性,以及在多线程环境中的安全性。正确使用`final`能够提高代码的清晰度、稳定性和性能。

    FinalData免安装版

    FinalData是一款广受欢迎的数据恢复工具,尤其以它的免安装版本为用户提供了极大的便利。这款软件在数据丢失或硬盘出现故障时,能有效地帮助...因此,了解并掌握FinalData的使用方法对于个人和企业来说都是十分重要的。

Global site tag (gtag.js) - Google Analytics