Java基础:关键字final,static

一 . final

  含义:adj.最后的,最终的; 决定性的; 不可更改的。在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。

  1)修饰成员变量、局部变量:在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量。在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。更重要的是,final会告诉编译器,这个数据是不会修改的,那么编译器就可能会在编译时期就对该数据进行替换甚至执行计算,这样可以对我们的程序起到一点优化。针对引用类型和基本类型有点不一样。

class Value{
    private int i;  

    public Value(){
    }
    public Value(int i){
        this.i = i;
    }
    public int getI() {
        return i;
    }  

    public void setI(int i) {
        this.i = i;
    }
}
public void finalTest(){
    //基本数据类型
    final int a ;
    a = 1;
//        a = 2; 编译提醒报错
    final Value value = new Value(2);
    value.i = 3;//改变对象的属性值,编译没报错
//         value = new Value(4);//新对象,编译报错
}

  final修饰基本数据类型的时候,变量的值不可以改变;final修饰引用类型的时候,变量引用的对象的地址不可以改变(只能指向该对象,无法再指向其他对象),但是引用的对象是可以改变的。

  2)修饰方法:方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。

class Value{
    public final int test(){
    return 1;
    }
}
class SubValue extends Value{
//   @Override
//   public final int test(){//compilation error:override method is final
//            return 2;
//   }
}

  3)修饰方法参数:方法的形参使用final修饰,代表在这个方法里面该参数都无法被修改(基础数据类型无法修改,引用类型无法修改引用对象的地址)。

public void fianlParams1(final int i){
//  i = 3;//compilation error: can not assign a value to final variable "i"
}
public void fianlParams2(final Value i){
//  i = new Value(12);//compilation error: can not assign a value to final variable "i"
}

  4)修饰类:使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

原文地址:https://www.cnblogs.com/knsbyoo/p/9032314.html

时间: 2024-11-05 16:02:23

Java基础:关键字final,static的相关文章

java基础-------关键字final

java基础   ||    关键字final 在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了.final是java的关键字,它所表示的是"这部分是无法修改的".不想被改变的原因有两个:效率.设计.使用到final的有三种情况:数据.方法.类. 一. final数据 有时候数据的恒定不变是很有用的,它能够减轻系统运行时的负担.对于这些恒定不变的数据我可以叫做"常量"."常量"主要应用与以下两个地方: 1.编

Java基础-关键字-final

在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继承.也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰.final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法. 在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽

java基础之final关键字

与final关键字相关的笔试题面试题也是一道必考题.而且对于final的实际应用非常广泛,在代码设计的时候,如果对此不够足够掌握,可能就会很难排查与此相关的异常. final的理论知识如下: final类型的成员变量初始化值: 1.声明时候直接赋值 2.构造方法中赋值,如果一个类中有多个构造方法,就要保证在每个构造方法中都要完成对final类型变量的初始化工作 3.静态final成员变量必须在声明时赋值,且不能在构造方法中赋值 4.final成员变量指的是引用不能改变,即该变量的引用不能在指向其

java基础学习总结——static关键字

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——static关键字 一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享. 1.1.静态成员变量与非静态成员变量的区别 以下面的例子为例说明 1 package cn.galc.test; 2 3 public class Cat { 4 5

Java基础之final和static关键字

一.final        根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的.        final方法不能被子类的方法覆盖,但可以被继承.        final成员变量表示常量,只能被赋值一次,赋值后值不再改变.        final不能用于修饰构造方法.        注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的. 1.fin

Java基础之final、static关键字

一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的常见用法做点总结记录,方便之后的回顾以及突击知识点. 二.关键字 final final,一如字面意思 “最终的”,大体在 Java 中表示 “不可变的”.可用来修饰类.方法.方法参数以及变量. 1.修饰类 final 在修饰类的时候,代表的是此类不能被继承.也就是说如果一个类确定不会被继承使用,则

【Java基础】final关键字总结

Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

Java基础15-final、static关键字和Object类

一.final关键字 1.什么是final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 2.final的特点 ①修饰类不可以被继承,但可以继承其他类 ②final修饰的

Java中关键字final、static的使用总结

一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. final方法不能被子类的方法覆盖,但可以被继承. final成员变量表示常量,只能被赋值一次,赋值后值不再改变. final不能用于修饰构造方法. 注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的.

JAVA基础知识(static,final,abstract)浅谈

Static作用于代码块:称作静态代码块(可以初始化static field,不能初始化非static field:Static作用于methods1.        Static方法只能访问static 方法,不能访问非static 方法2.        Static 方法只能访问static field, 不能访问非static field3.        非static 方法可以访问static fields 和 static methods4.        Static metho