关于finalkeyword的总结,是非常easy学习和掌握的,大致分为用final修饰的符号常量、类、方法、属性四部分。而这四部分的内容也是我们必须掌握的,非常有用。在项目中常常来利用finalkeyword来帮忙以完毕我们特定的任务。以下就来看看终于的final:

符号常量

用 final 修饰的变量就称之为终于变量。也称之为符号常量。

比如:

double PI = 3.14;

===>>>  final double PI = 3.14;  //符号常量

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d37.a3;
public class finalTest {
public static void main(String[] args) {
final double PI = 3.14;
//PI = 3.1415926; //符号常量不可中途改变其值。
SonDemo1 sd = new SonDemo1();
int re = sd.add(10, 20);
System.out.println( re );
}
}
class Person{
private String name;
private final boolean sex ; //终于属性(仅仅读属性) public Person( String name, boolean sex ) {
this.name = name;
this.sex = sex;
}
}
class DemoA {
public final int add( int x, int y ){
return x + y;
}
}
class SonDemo1 extends DemoA {
}
//class Son extends String {
//
//}
final class Father {
}
//class Son extends Father {
//
//}</span></span>

用 final 修饰的类,即为终于类。

特性:

它不可有子类。即: 防继承的。

比如: 专家提供的 String 类就量个终于类。

方法

用 final 修饰的方法。即为终于方法。

特性:

它不可被重写。即: 防重写。

属性

用final修饰的实例变量就是终于属性,也成为仅仅读属性。

特性:

1) 它必须由final修饰。

2) 它一旦赋值。则终身不变。(中途不变)

3) 当声明终于的实例变量时。若没有赋值,则在每个构造器中必须对它赋值。

4) 终于的实例变量没有设定器。

5) 终于的实例变量名称大写。

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d38.a1;

public class FinalObjectVarTest {
public static void main(String[] args) {
Person p1 = new Person("张灵",false, 18);
Person p2 = new Person("张灵",false, 18);
System.out.println( p1 );
System.out.println( p2 ); System.out.println( p1.equals(p2) ); //p1.SEX = true;
}
} class Person {
//实例变量
private String name;
public final boolean SEX; //约定: true为男, false为女
private int age; public Person() {
int n = (int)(2 * Math.random());
this.SEX = n == 1 ;
}
public Person(String name,int age) {
this();
this.name = name;
this.age = age;
}
public Person(String name, boolean sex, int age) {
this.name = name;
SEX = sex;
this.age = age;
} public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
} //訪问器
public String getName() {
return name;
}
public boolean isSEX() {
return SEX;
}
public int getAge() {
return age;
} //
@Override
public String toString() {
return "姓名: " + name + " 性别: " + (SEX ? "男":"女") + " 年龄: " + age;
} @Override
public boolean equals(Object obj) {
Person pp = (Person)obj;
if( this.name.equals( pp.name ) && this.SEX == pp.SEX && this.age == pp.age ){
return true;
}else{
return false;
}
}
}
</span></span>

业务思想

就像英语中的一句谚语:”Each coin has two sides”(每一个硬币都有两面),keywordfinal正如那仅仅硬币。用final来定义符号常量、类、方法、属性能够降低我们非常多工作,容错率也提高了非常多。

[JAVA &#183; 0基础]:11.终结者-final的更多相关文章

  1. [JAVA &#183; 0基础]:16.经常使用类

    基本类型包装 为什么须要包装类? JAVA并非纯面向对象的语言.Java语言是一个面向对象的语言.可是Java中的基本数据类型却是不面向对象的.可是我们在实际使用中常常须要将基本数据转化成对象,便于操 ...

  2. [JAVA &#183; 0基础]:19.容器类

    概述 容器 就是存放数据的一个集合 (java提供了一个接口专门去约束我们容器的实现类) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L ...

  3. [JAVA &#183; 0基础]:3.转义字符

    定义 全部的ASCII码都能够用"\"加数字(通常是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\ ...

  4. Java入门 - 语言基础 - 11.switch_case

    原文地址:http://www.work100.net/training/java-switch-case.html 更多教程:光束云 - 免费课程 switch_case 序号 文内章节 视频 1 ...

  5. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

  6. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  7. Java多线程系列--“基础篇”11之 生产消费者问题

    概要 本章,会对“生产/消费者问题”进行讨论.涉及到的内容包括:1. 生产/消费者模型2. 生产/消费者实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p ...

  8. java基础(11) -JDBC

    java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...

  9. JAVA思维导图系列:多线程0基础

    感觉自己JAVA基础太差了,又一次看一遍,已思维导图的方式记录下来 多线程0基础 进程 独立性 拥有独立资源 独立的地址 无授权其它进程无法訪问 动态性 与程序的差别是:进程是动态的指令集合,而程序是 ...

随机推荐

  1. android hook 框架 xposed 如何实现挂钩

    Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2  如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...

  2. android与PC直连的socket问题

    关键字:abdroid 模拟器 socket 突然有人说使用android的模拟器做socket服务器,PC做客户端,使用UDP通信的时候,android端无法收到数据包.反过来没问题,我觉得这怎么可 ...

  3. PHP 时间获取本周 本月 本季度用法

    <?php        $week_begin = mktime(0, 0, 0,date("m"),date("d")-date("w&qu ...

  4. 解决provisional headers are shown问题

    前端通过ajax的get请求向后端发送数据,后端死活收不到. ajax代码如下: $.ajax({ url:"/news_list", type:"GET", ...

  5. js比对一维数组全等的算法

    //辅助方法1,返回某个值在数组中的位置 Array.prototype.indexOf = function (e) { for (var i = 0, l = this.length; i < ...

  6. 第一章:1-10、试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit),从源站到目的站共经过k段链路,每段链路的传播时延为d(s),数据率为C(bit/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?

    <计算机网络>谢希仁著第四版课后习题答案答:对电路交换,当t=s时,链路建立: 当t=s+x/C,发送完最后一bit:                 当t=s+x/C+kd,所有的信息到 ...

  7. ReportView控件的使用

    ReportView控件的使用Posted on 2012-01-06 17:02 随遇 阅读(3006) 评论(0)  编辑 收藏 最近使用了ReportView控件绑定数据,总结下: 1.在设计器 ...

  8. Delphi存取图像完整解决方案

    http://blog.sina.com.cn/s/blog_693cf1cf0100plkq.html 对于涉及图像数据的数据库应用程序,图像数据的存取技术是一个关键.由于缺少技术文档及DEMO例程 ...

  9. 如何打造属于自己的Javascript武器库(封装方法)

    前言 代码写的久了,就会发现很多时候都是在写一些重复的东西,这个时候就应该要考虑到提高工作效率了,比如对常用方法的封装,例如日期格式化,浏览器类型判断等. 今天这篇文章我们就来看看如何封装常用的Jav ...

  10. HDU 5880 Family View (2016 青岛网络赛 C题,AC自动机)

    题目链接  2016 青岛网络赛  Problem C 题意  给出一些敏感词,和一篇文章.现在要屏蔽这篇文章中所有出现过的敏感词,屏蔽掉的用$'*'$表示. 建立$AC$自动机,查询的时候沿着$fa ...