java中final关键字的用法

final:adj. 最终的,不可改变的

我们就取其字面意思”不可改变的“。

final可以修饰类、方法、变量。那么分别是什么作用呢?

  (1)修饰类:表示类不可被继承

  (2)修饰方法:表示方法不可被覆盖

  (3)修饰变量:表示变量一旦被赋值就不可以更改它的值。java中规定final修饰成员变量必须由程序员显示指定变量的值。

final修饰成员变量时,要在哪里执行初始值?

  (1)如果final修饰的是类变量,只能在静态初始化块中指定初始值或者声明该类变量时指定初始值。

  (2)如果final修饰的是成员变量,可以在非静态初始化块、声明该变量或者构造器中执行初始值。

注意,只能在一个地方指定初始值!!

final修饰局部变量

  系统不会为局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,即可以在定义时指定默认值(后面的代码不能对变量再赋值),也可以不指定默认值,而在后面的代码中对final变量赋初值(仅一次)。

final修饰基本类型变量和引用类型变量的区别?

  final修饰基本类型变量时,不能对基本类型重新赋值。

但是,对于引用型变量,它仅仅保存的是一个引用,final保证的是这个引用类型的变量所引用的地址不会变。即一直引用同一个对象,但是这个对象的值可以改变。

class Person()
{
    private int age;
    public Person(){}
    public Person(int age)
    {
        this.age = age;
    }
}    

public class FinalReferenceTest
{
    main()
    {
        final int[] iArr={1,2,3,4};
        Arrays.sort(iArr);//合法
        iArr[2]=-3;//合法
        iArr=null;//非法,对iArr不能重新赋值
        final Person p = new Person(25);
        p.setAge(24);//合法
        p=null;//非法
    }
}

  

final修饰方法

  final修饰的方法不能被重写。例如Object类中的getClass()方法就是final方法。不能被重写。

  父类中private的方法,在子类中不能访问该方法,但是子类中仍然可以定义一个与父类private方法有相同的方法名、相同的形参列表和相同的返回值的方法,不属于方法重写,只是定义了一个新的方法。

  final修饰的方法仅仅是不能被重写,并不是不能被重载。下面的代码,是方法重载,仍然没有错误!

public class FinalClass
{
     public final void test(){}
     public final void test(int i){}
}

  

final修饰类

时间: 2024-08-07 16:39:48

java中final关键字的用法的相关文章

关于Java中final关键字的用法总结

用于数据 永不改变的编译时常量,必须是基本类型,static final常量定义时必须赋值 一个运行时被初始化却又不希望被改变的值 空白final,确保使用前必须被初始化,但有更大的灵活性 final参数,用于对象引用,对象不可改变,用于基本类型,值不可以改变 用于方法 防止方法的行为被改变,不可覆盖 private方法默认为final的 曾经使用final方法可以提高效率,现已不提倡 用于类 表示该类不可以被继承 final类方法默认指定为final的 关于Java中final关键字的用法总结

java中synchronized关键字的用法

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁.线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁.获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法. java内置锁是一个互斥锁,这就是意味着最多只有一个线程能够获得该锁,当线程A

java中 this关键字的用法总结

JAVA中this用法总结 2013-07-22 17:06:32|  分类: 技术类_JAVA|举报|字号 订阅 JAVA中this用法总结 1.强调本类中的方法 class Person{ private String name;        //声明姓名属性 private int age;        //声明年龄属性 public void tell(){        //取得信息的方法 System.out.println("姓名:"+getName()+"

Java中instanceof关键字的用法总结

instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据 java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: result = object instanceof class 参数: Result:布尔类型

关于java中final关键字与线程安全性

在Java5中,final关键字是非常重要而事实上却经常被忽视其作为同步的作用.本质上讲,final能够做出如下保证:当你创建一个对象时,使用final关键字能够使得另一个线程不会访问到处于"部分创建"的对象,否则是会可能发生的.这是 因为,当用作对象的一个属性时,final有着如下的语义: 当构造函数结束时,final类型的值是被保证其他线程访问该对象时,它们的值是可见的 为什么是必须的 使用final是所谓的安全发布(safe publication)的一种方式,这里,发布(pub

JAVA 基础--final 关键字的用法

在java中,final的含义在不同的场景下有细微的差别,in a word,它指的是“不可变的” 1.修饰数据.这里的可以看到被final修饰的变量,值不能被改变,但是 package FinalTest; public class FinalPerson { public String _name; public final int _age; public FinalPerson(String name, int age) { this._name = name; this._age =

java中final关键字的作用

1.被final关键字修饰的类不能被继承 final class Father{ } public class Son extends Father { } //Son不能继承Father类 2.final 修饰的方法不能被重写 3.final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改 (1)对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改:如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象. 上面的一段代码中,对变量i和引用

java中final关键字

final关键字的作用 1.修饰变量:被修饰的变量不可改变,一旦赋值,不可重新再赋值 2.修饰方法:被修饰的方法可以被子类重写,但是不可以重载 3.修饰类:被修饰的类不可以被继承 原文地址:https://www.cnblogs.com/superCwen/p/10040953.html

java中static关键字的用法

<Java编程思想(第四版)>中P86中有对static关键字的详细解释. “在static方法的内部不能调用非静态方法,反过来倒是可以.而且在没有创建任何对象的前提下,仅仅通过类本身来调用static方法,这实际上正是static方法的重要用途.” 以下通过“1.static方法:2.static变量:3.static代码块”三方面来阐述. 1.static方法: static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依