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以及其他包装类。
Java基础:关键字final,static的更多相关文章
- Java基础-关键字-final
		
在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字的基本用法. 1.修饰类 当用final修饰一个类时,表明这个类不能被继 ...
 - java基础 -- 关键字final的用法
		
用法一(修饰变量): Final变量能被显式地初始化并且只能初始化一次.被声明为final的对象的引用不能指向不同的对象.但是final对象里的数据可以被改变.也就是说final对象的引用不能改变,但 ...
 - java基础之final/static/static final
		
一.final 1.final修饰变量(常量) final修饰的成员变量表示常量,一旦给定初值既无法改变 2.final方法 final修饰方法,表示该方法不能被子类重写 好处:比非final方法要快 ...
 - Java基础之final和static关键字
		
一.final 根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. ...
 - Java基础之final、static关键字
		
一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的 ...
 - Java基础(五)  final关键字浅析
		
前面在讲解String时提到了final关键字,本文将对final关键字进行解析. static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提 ...
 - 【Java基础】final关键字总结
		
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
 - java 关键字final static native详解
		
java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...
 - java基础课程笔记 static  主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
		
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
 - java常用关键字(static、final、this、super)
		
this关键字 this关键字的作用有 1.调用本类的成员变量 public class Soft{ private int a; public Soft(int a){ this.a=a; } } ...
 
随机推荐
- Linux下的压缩解压缩命令
			
*.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— *.gz ...
 - 第27章 LTDC/DMA2D—液晶显示
			
本章参考资料:<STM32F76xxx参考手册2>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于开发板 ...
 - Hadoop 学习之——HDFS
			
HDFS是HADOOP中的核心技术之一——分布式文件存储系统.Hadoop的作者Doug Cutting 和Mike 是根据Google发布关于GFS 的研究报告所设计出的分布式文件存储系统. 一.H ...
 - sharepoint OOS巨大坑
			
首先,我们安装的操作系统是windows server 2016 datacenter最新版,然后安装了OOS2016年的那个版本,打好语言包,安装必备软件,所有的步骤都没问题,但是你配置OOS场的时 ...
 - Mybatis resultMap灵活用法(使用子查询)
			
### 背景查询广州每个景点的总流量,和每个景点每日流量 #### 数据表 t_广州|唯一标识id|地点place|流量counts|日期date||:---:|:---:|:---:|:---:|| ...
 - Java Bean与Map之间相互转化的实现
			
目录树 概述 Apache BeanUtils将Bean转Map Apache BeanUtils将Map转Bean 理解BeanUtils将Bean转Map的实现之手写Bean转Map 概述 Apa ...
 - HDU 2065 "红色病毒"问题(生成函数)
			
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
 - hdu_4465_Candy
			
LazyChild is a lazy child who likes candy very much. Despite being very young, he has two large cand ...
 - [读书笔记] Spring MVC 学习指南 -- 第一章
			
控制反转(Inversion of Control, IoC)/ 依赖注入: 比如说,类A依赖于类B,A需要调用B的某一个方法,那么在调用之前,类A必须先获得B的一个示例引用. 通常我们可以在A中写代 ...
 - sql 优化的几种方法
			
.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. .应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而 ...