Static 静态属性 与 静态方法,和静态代码块、类加载

您所在的位置:网站首页 redis工具类静态方法好还是非静态方法好 Static 静态属性 与 静态方法,和静态代码块、类加载

Static 静态属性 与 静态方法,和静态代码块、类加载

2023-07-18 19:15| 来源: 网络整理| 查看: 265

栈里面存储的是堆里面的地址

 

——阅读此文章前,先介绍一下:本篇文章主要介绍的是静态相关的概念,主要从三个方法方面讲解。用大标题分为了一、二、三个板块

 

一、什么是静态属性??

 

静态属性是整个类共有的属性。举个例子才好理解:有一个学生Student类,里面有name、age、count(班级学生数量)等的属性。这里的name和age是一个学生所特有的,但是count呢?它不是,我们不希望每一个学生拥有不同的学生的数量,所以我们把count定义成static类型的数据。

在main函数中如何定义静态变量的值呢?

 

类名.静态属性名   访问静态属性

 

注意:使用变量来访问count,修改值也是可以的,但是呢?由于Java的开放性,不建议这么使用。如果这么写的话,Java会报一个警告:

 

静态属性存在方法区当中,所以不论是通过对象访问还是类名访问,访问的始终是同一个变量

 

 

静态属性是整个类共同持有的共享空间,任何对象修改,都会影响其他对象

 

静态属性属于整个类,不属于某一个对象,所以建议使用类名修改静态属性

 

 

二、使用static修饰的方法

 

 

静态属性 又称为 类属性、  静态方法又称为 类方法

 

类名加方法:都是访问的是静态方法

比如:Arrays.copyOf();

      Arrays.sort();  Math.random();    Math.sqrt();

 

 

在类中的方法前面增加一个static就变成了静态方法

同一个类中的静态方法,可以调用另外一个静态方法,直接将另外一个静态方法名字写进行就行了,默认前面加了当前的类

执行结果:

 

静态方法的特点:

 

静态方法允许直接访问静态成员

 

静态方法不能直接访问非静态成员。因为:非静态成员变量是属于对象的,静态方法是直接通过类进行调用的,不是通过对象进行调用的,所以说静态方法内部是不能直接访问非静态成员的

 

静态方法中不允许使用this或是super关键字。因为:this是调用本类中的非静态属性,super也是调用父类的非静态属性

 

静态方法可以继承,不能重写、没有多态

 

 

 

三、静态代码块 static{ }

 

在类加载,什么是类加载??的时候才执行,而且只执行一次,类似于初始化的功能

类加载

 

举个例子:

一个Person类:

test主函数

 

我们这里故意执行了两次 person的构造方法

我们看static静态代码块执行的次数??

 

调用类中静态方法也可以出发static 的执行:

 

注意 只有静态属性、静态方法   没有静态类,类只有抽象类

 

总结: static修饰的成员为静态成员,无需创建对象,可直接通过类名访问静态方法不能直接访问非静态成员静态方法中不能使用this或super静态方法可以继承、不能重写、没有多态静态代码块在类加载时被执行,且只执行一次

 

 

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3