final关键字(final是最终的)

1.final修饰特点

a.修饰类,类不能被继承

b.修饰变量,变量就变成了常量

    修饰基本数据类:final int num = 10;

    修饰引用数据类型变量只能始终指向一个对象,不能再指向其他对象

    即    基本类型,是值不能被改变(报错无法为最终变量NUM分配值)

    引用类型,是地址值不能被改变,对象中的属性可以改变

 c.修饰方法,方法不能被重写

2.final关键字修饰局部变量

a.修饰基本类型,是值不能被改变(报错无法为最终变量NUM分配值)

b.修饰引用类型,是地址值不能被改变,对象中的属性可以改变

例:

class bj08_20 {

public static void main(String[] args) {

//final修饰基本数据类型

final int NUM = 10;

System.out.println(NUM);

//final修饰引用数据类型

final Person p = new Person("张三",23);

//p里面是个地址值

//p = new Person("李四",24);再次改变p值是不允许的,可以改变对象的属性值

p.setName("李四");

p.setAge(24);

System.out.println(p.getName() + "..." + p.getAge());

method(10);

method(20);//之前method弹栈消失了

}

public static void method(final int x) { //方法声明上final修饰的

System.out.println(x);

}

}

3.final修饰变量的初始化时机

1)final修饰变量的初始化时机----有几种初始化的方法

a.显示初始化:final int num = 10;

b.在对象构造完毕前即可(构造方法初始化)

注意:

final修饰方法不可以被其他重写 public final void print() {}不希望任何方法被重写,就把类定义成final class Father{}

写了一些方法后不想让子类改变了.

例:

class Demo {

int num;

}

Demo d = new Demo();

在创建对象时,num会默认初始化值0

final修饰的值只能被赋值一次,成员变量的默认初始化值是无效值(有默认初始化值),所以一定要进行显示初始化值(赋值)(即final num = 10).若果没有进行赋值,会报错:可能尚未初始化变量num.

例:

class Demo {

final int num;

public Demo {

num = 10;//在在对象构造完毕前即可

}

}

Demo d = new Demo();

final关键字(final是最终的)的更多相关文章

  1. 浅析final关键字

    浅析final关键字 final单词字面意思是"最终的,不可更改的".所以在java中final关键字表示终态,即最终的状态,"这个东西不能被改变". fina ...

  2. 抽象类、final关键字、多态

    1.1 抽象类 1.1.1 抽象类概念 C extends B,B extends A,在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 例如:人 ...

  3. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  4. 多态,向上转型,向下转型,final关键字

    多态 概述   多态封装性,继承性之后,面向对象的第三大特性. 定义   多态:是指同一种行为,具有多个不同的表现形式.   生活中,比如跑的动作,猫,狗,大象跑起来的动作都是不一样的,再比如飞的动作 ...

  5. java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类

    一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...

  6. 面试题系列:工作5年,第一次这么清醒的理解final关键字?

    面试题:用过final关键字吗?它有什么作用 面试考察点 考察目的: 了解面试者对Java基础知识的理解 考察人群: 工作1-5年,工作年限越高,对于基础知识理解的深度就越高. 背景知识 final关 ...

  7. 代码块及final关键字的使用

    1.代码块的作用:用来初始化类.对象 2.代码块如果有修饰的话,只能使用static. 3.分类:静态代码块 vs 非静态代码块 4.静态代码块 内部可以有输出语句 随着类的加载而执行,而且只执行一次 ...

  8. Java关键字final、static

    一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...

  9. final关键字

    1.final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再 被扩展,那么就设计为fi ...

随机推荐

  1. October 25th Week 44th Tuesday 2016

    The best preparation for tomorrow is doing your best today. 过好今天,就是对明天最好的准备. Tomorrow is always base ...

  2. Redis

    1. sds类型 sds为一种抽象数据结构 typedef char *sds;struct sdshdr { // buf 已占用长度int len; // buf 剩余可用长度int free;  ...

  3. unity播放视频

    方法一: 1.用一个Quad(或者其他的)做屏幕,调整摄像机位置和它的大小,使它显示在你想要的区域 2.将视频拖入Unity,拖入,拖入,拖入:不是将视频直接copy到指定的文件夹中 3.将下面脚本挂 ...

  4. python os.walk()

    os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...

  5. Flume(2)组件概述与列表

    上一节搭建了flume的简单运行环境,并提供了一个基于netcat的演示.这一节继续对flume的整个流程进行进一步的说明. 一.flume的基本架构图: 下面这个图基本说明了flume的作用,以及f ...

  6. [Tool]使用ConfuserEx混淆代码

    为了防止程序发布后被一些"坏人"破解,开发者通常会对自己的代码进行混淆.这篇博客将介绍一款使用很广,并且混淆效果也不错的工具ConfuserEx. 新建一个C# 控制台程序,Hel ...

  7. CozyRSS开发记录15-获取和显示RSS内容

    CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...

  8. HDU 5754 Life Winner Bo 组合博弈

    Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard gam ...

  9. 解决scrollview和viewpager冲突

    import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; i ...

  10. QT生成流水账号

    在做数据库课程的时候,要生成财务表,每条记录应该有一个流水账号. 实现思路: 当前时间+随机一个四位数 上代码 //生成流水号 QString adminRecharge::getNumber() { ...