Java核心技术第四章——2.final 和 static
final实例域
实例域(对象的属性)可修饰为final。修饰为final后,在构建对象时必须初始化这个实例域。若没有在实例域进行初始化,那么必须在每个构造器内初始化这个实例域(否则会编译错误)。
表明在后面的操作中,不能够再对它进行修改。即没有对应的域更改器(set)方法.
final修饰大部分都是应用于基本类型域(基本数据类型)或者不可变类的域(例如:String类),若修饰可变的类,可能会对读者造成混乱。
静态域与静态方法 static
静态域
static修饰的属性称为静态域,它是属于类的,所以也称为类域。每个类中只有一个这样的静态域。不管你new 多少次对象,他们都是共用这个静态域,
所以静态域是属于类的,不属于对象。可以看下图:

我把nextId设置为静态域,userId为私有数据域。在调用set方法的时候,nextId都会自增1。下面为测试方法和结果:


可以看到UserInfo类的nextId 在u1 和 u2中都是共用的。当其中一个对象修改nextId,那么其他对象的nextId也会跟着修改。
静态常量
上述所说的是静态变量,一般比较少用,用的比较多的是静态常量,就是使用final 和 static修饰的属性。
例如,Math.PI(圆周率),使用方法为 类名.属性名 静态常量一般修饰不可变的实例域。

在上一章封装性说过最好对实例域设置为私有域(private)。而final修饰的常量则没有问题,可以修饰为公有域(public)。因为final域是不可变的。
静态方法
使用静态方法时,并不需要实例化对象。使用方法为 类名.方法名 例如 UserInfo.getNextId方法

使用getNextId方法时,不使用任何的UserInfo对象,就是说不会使用到它的私有数据域,可以访问其静态域。而上述说过静态域是属于类的,不属于任何对象。
一般在下面两种情况下使用静态方法:
1.一个方法不需要访问对象的状态,所需的参数都不会使用到私有数据域。
2.一个方法只需要访问类的静态域
木木只是一个小白,若那里写的不好或者有更好的建议,请留言 或 发到我的QQ邮箱 821312534@qq.com 。谢谢大家啦~(*^▽^*)
Java核心技术第四章——2.final 和 static的更多相关文章
- [Java核心技术]第四章-对象与类(4.1-4.6总结)
4.1面向对象程序设计概述 OOP(面向对象编程Object Oriented Programming) OOP中数据第一位,算法第二位. 类 封装:关键在于不能让其他方法直接访问类的实例域,程序仅通 ...
- Java核心技术第四章——3.对象构造
重载: 如果多个方法(包含构造方法)有相同的名字.不同的参数,便产生重载.编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配挑选出相对应的方法. 如果 ...
- Java核心技术第四章——1.封装性
封装性(有时称为数据隐藏): 实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域值.程序仅通过对象的方法与对象的数据进行交互. 给对象赋予了"黑盒"的特征,提高了重用性 ...
- Java核心技术第五章——1.类、超类、子类(2)
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...
- “全栈2019”Java多线程第四章:设置和获取线程名称
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第四章:catch代码块作用域详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java第九十四章:局部内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第十四章:二进制、八进制、十六进制
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 18 UI美化layer-list
layer-list 用于叠加两张图片 或者设置 RatingBar(评分) 进度条 相框等 在工程文件中的res/drawable/新建一个layer-list(叠加两张图片) 如下 : <? ...
- 【并发编程】ThreadPoolExecutor参数详解
ThreadPoolExecutor executor = new ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long ke ...
- 安卓中的消息循环机制Handler及Looper详解
我们知道安卓中的UI线程不是线程安全的,我们不能在UI线程中进行耗时操作,通常我们的做法是开启一个子线程在子线程中处理耗时操作,但是安卓规定不允许在子线程中进行UI的更新操作,通常我们会通过Handl ...
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们通常想在app启动的早期做一些事情,可能放在AppDeleg ...
- 03 CheckBox 复选框
五 CheckBox 复选框 >概念:可以从一个集合选项中选择一个或者多个选项 >属性:checked 选择状态 >使用: > ...
- java开源项目之IQQ学习记录之项目环境搭建与启动
本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/18779727 作者:sushengmiyan 现在就码字说说今天晚上搞定的一个项目 ...
- Chapter 3 Protecting the Data(1):理解权限
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39548665,专题目录:http://blog.csdn.net/dba_huangzj ...
- OJ题:奇偶归一猜想——求归一过程中的最大值
题目: 题目内容: 奇偶归一猜想--对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1. 如n = 11,得序列:11, 34, 17, 52, ...
- log4j的一些配置
a). 新建Java Project>>新建package>>新建java类: b). import jar包(一个就够),这里我用的是log4j-1.2.14.jar, c) ...
- 完美滑动顶部固定ScrollView,合并可以上拉,下拉加载更多
先看效果: 主要处理: 使用PullToRefreshScrollView修改内部的scrollView源码,更换成可以固定顶部的自定义scrollView @Override protected S ...