当前位置:网站首页>final和static
final和static
2022-06-25 22:06:00 【程の编程日记】
final
看到final要想到(三点,数据,方法,类):
- 声明数据
- 声明方法
- 声明类
以下是具体说明:
声明数据
声明数据是常量,可以是编译时常量,也可以是运行时被初始化之后不可改变的常量。
对于基本类型,final使数值不变
对于引用类型,final可以使引用不变,就是不能引用其他对象,但是本身还是可以修改的,引用不可修改,本身属性值可以修改

final Student s = new Student();
s.name = "houge";
s.setName("shuaige");
s.name = "houge";
s.setAge(18);
System.out.println(s.toString()); // Student{name='houge', age='18'}
声明方法
方法不能被子类重写,private方法隐式的被指定为final
声明类
类不允许被继承
static
看到static要思考(六点,变量,方法,语句块,内部类,导包,顺序):
- 静态变量
- 静态方法
- 静态语句块
- 静态内部类
- 静态导包
- 初始化顺序
静态变量
又称类变量,这个变量是属于类的,可以直接通过类名访问,所有实例都共享,内存中只存在一份。
那什么又是实例变量呢?
每创建一个对象就会产生一个实例变量,与实例同生共死。
静态方法
类加载就存在,直接通过类名访问,静态方法不能是抽象方法,只能访问所属类的静态字段和静态方法。
class Solution { Integer a; // 实例变量 static Integer b; // 静态变量 public static void func(){ // a = 10 不能使用实例变量,只能访问静态变量 b = 10; System.out.println("静态方法,可以直接通过类名调用"); } public static void main(String[] args) { Solution.func(); } }静态语句块
特点:在类初始化的时候运行一次
class Solution { static { System.out.println("我是静态语句块!"); } public static void main(String[] args) { Solution solution = new Solution(); Solution solution1 = new Solution(); Solution solution2 = new Solution(); } }结果:只会输出一句,因为只会执行一次
我是静态语句块!只要涉及到使用这个类,静态语句块内的内容就会执行,并且执行一次,后续不会再执行,比如调用个静态方法:
class Solution { static { System.out.println("我是静态语句块!"); } static void func(){ System.out.println("我是静态方法!"); } public static void main(String[] args) { Solution.func(); // Solution solution = new Solution(); // Solution solution1 = new Solution(); // Solution solution2 = new Solution(); } }输出结果:
我是静态语句块! 我是静态方法!再把下面注释打开,还是这两句,可以自行测试。
静态内部类
静态内部类可以直接new,非静态内部类需要用外部类的实例来创建。
class Solution { class InnerClass{ } static class StaticInnerClass{ } public static void main(String[] args) { Solution solution = new Solution(); InnerClass innerClass = solution.new InnerClass(); StaticInnerClass staticInnerClass = new StaticInnerClass(); } }静态导包
使用静态变量和方法的时候就可以不用指明类名字了,但是可读性不高。
import static com.xxx.ClassName.*初始化顺序
静态变量和静态语句块优先于实例变量和普通语句块(静态优先),同是静态取决于代码顺序。各种变量语句块执行完毕才会执行构造方法。
存在继承的情况下:
- 父类(静态变量,静态语句块)
- 子类(静态变量,静态语句块)
- 父类(实例变量,普通语句块)
- 父类(构造函数)
- 子类(实例变量,普通语句块)
- 子类(构造函数)
一句话总结,静态优先,父类优先。
边栏推荐
- mysql5.7版本在配置文件my.ini[mysqld]加上skip-grant-tables后无法启动
- mysql
- Leetcode (435) - no overlapping interval
- Uniapp -- framework arrangement and analysis summary
- 1.8 billion pixel Mars panorama Ultra HD released by NASA, very shocking
- IDEA中如何生成get/set方法
- Px4 simulation basis
- c_ uart_ interface_ Example and offboard modes
- When are the three tools used for interface testing?
- Informatics Orsay all in one 1353: expression bracket matching | Luogu p1739 expression bracket matching
猜你喜欢

C# IO Stream 流(二)扩展类_封装器

Use of xinchida ble 5.0 Low Power Bluetooth module (at command serial port transparent transmission) rsbrs02abr

idea 查看单元测试覆盖率

SSL/TLS、对称加密和非对称加密和TLSv1.3

Uniapp -- list page of multi header tabs

mysql版本升级+数据迁移

How does excel translate Chinese words into English automatically? This formula teaches you

Qtcreator formatting code

中序线索二叉树

Hibernate architecture introduction and environment construction (very detailed)
随机推荐
先序线索二叉树
CSDN force value
Kylin
Run the dronekit flight control application on Shumei faction under px4-jmavsim software simulation environment
Ad20 learning notes II
Reproduction of an implant found by Kaspersky that writes shellcode into evenlog
关于Swoole协程容器
Qtcreator formatting code
Apache Doris1.0版本集群搭建、负载均衡与参数调优
The package name of the manifest file in the library project and the app project are not the same
Jenkins 发布PHP项目代码
Blob
Solve 'tuple' object has no attribute 'lower‘
QT custom implemented calendar control
Once beego failed to find bee after passing the go get command Exe's pit
B. Box Fitting-CodeCraft-21 and Codeforces Round #711 (Div. 2)
第五章 习题(124、678、15、19、22)【微机原理】【习题】
两种块级元素居中的方式
The simplest screen recording to GIF gadget in history, licecap, can be tried if the requirements are not high
hiberate架构介绍及环境搭建(非常详细)