Java final 变量,类,方法
来源:互联网 发布:考勤系统数据读不出 编辑:程序博客网 时间:2024/05/16 12:42
文章来源:https://en.wikibooks.org/wiki/Java_Programming/Keywords/final
有三类:final 类 、 final 方法、final 变量。
一、final 变量: 如果一个变量一旦赋值,就不允许改,只能读了。
A final 不能设置 volatile(可见性或者是编译器和jvm不能改变指令的顺序)
.
下面1,2:就是final 的必不可少的知识点,只要记住这两点即可。
1、如果变量是一个primitive type,它的值不能改变。即变量a不能重新赋值。
2、如果变量是一个对象,仅仅它的连接不再可变,牢记在心它的值仍然能改变,
list 变量(实例变量)是一个对象,可以修改它里面的值
ArryList list1=new ArrayList();
list=list1;//编译时就会出错,list实例变量是常量,不能重新赋值,但是里面的数据可以改变。
3、The final
变量用在方法参数里。
1>当参数变量是原始类型时,方法里只是拿来用。
2>当参数变量是对象时,方法调用者,就是希望别人去改变参数对象值,哪么调用者接受改变的值,这个很有用。
当我们叫一个朋友(常量对象)去帮忙去帮修电脑,哪么朋友修好后,接收朋友的修改,
这时朋友不再接受别人的修电脑要求,一直帮我修好为止。
二、 final类也是利用final变量的特征:主要的目的,表示对象的内容不可改变,这样每建立一个String对象
如果要改变其中对象的值,必须重新建立一个新对象放改变的值,所以每次一个小小的应用测试,String对象最少也有1000多个对象。
1、禁止建立子类
2、不能成为抽象类,即类里面没有未实现的方法
例子:final String 类里面变量:privatefinalchar value[],这是一个原始类型char,所以当构造函数第一次赋值后,值不允许改变(对象活着时)
package str;
import static net.mindview.util.Print.*;
public class Immutable {
public static String upcase(String s) {
return s.toUpperCase();
}
public static void main(String[] args) {
String q = "howdy";
print(q); // howdy
String qq = upcase(q);
print(qq); // HOWDY
print(q); // howdy
}
}(1)String q = "howdy"; q不是一个final 实例变量,所以q可以赋新对象
String qq = upcase(q); 因为是常量类,所以对象里面的值不可改变,当q代表一个对象时,哪么不管它传给谁,
里面的值不能改变。
public static String upcase(String s) {return s.toUpperCase();}
当p传给方法upcase时,因为方法的参数变量只放在本地变量(堆栈中),所以当调用一个后,
jvm开始为方法参数分配空间,
String s:s是一个实例变量,分配4个字节存放传过来的q对象地址,指向数据存在的地方,
哪么s里面的值也不可以改变。
但是s=new String("abd"):可以重新指向一个新对象,因为它不是final 实例变量。
三、final方法:
1、禁止子类重写方法
2、如果一个类是final,暗示private 方法是final 方法
不能实现多态,多态必须是动态绑定.
3、不能成为抽象方法,即没有未实现的方法
4、static 方法也不能实现多态,因为是类级别的。
- Java final 类,final 方法,final变量
- final方法、final变量、final类、final对象—Java
- Java final 变量,类,方法
- final变量、方法、类
- Java面向对象-final类和final方法、final变量(常量)
- 关于java中final方法,类,成员变量的讨论
- Java final修饰类/方法/变量的特点
- final 修饰 类 方法 变量 形参
- final关键字可修饰类、方法、变量
- JAVA中final关键字的使用,含义,final变量和final方法deng
- Java final变量与final类的内存模型
- java中的final变量
- java谜题--final变量
- Java中的final变量
- [java]final修饰变量
- java 中的 final 变量
- Java中final变量
- java 中的 final 变量
- How to Upgrade Linux Kernel to Stable 3.18.4 on CentOS 7.x
- Chapter fourteen ARM概述(1)
- 排序算法-----冒泡排序简单介绍
- 7.1 Hibernate:内置生成器 -- assigned
- mysql 分区
- Java final 变量,类,方法
- MathWorks机器学习简介-2
- HTML笔记(HTML元素--链接与HTML图像)
- Linux下的SIGCHLD信号
- 根号2以及π的计算--关于无理数的畅想
- Java 多态
- C51单片机是怎么存储程序和数据的
- 《面向对象程序设计-C++》学习笔记1
- leetcode矩阵类题目专杀之54. Spiral Matrix