这一节我们来看一下在我们开发的过程中,在什么时候我们要用到static关键字进行静态修饰。
我们这里所说的静态,无非就是两种,一种是静态变量,一种是静态函数,我们分这两种情况进行说明static关键字的使用场合。
**一、静态变量**
我们在7.8节中对static关键字特点和7.9节中成员变量与静态变量区别进行学习的时候就已经很明确的指出了静态变量是共享数据,而对象中封装的特有数据。
因此我们可以这样解释:当分析对象中所具备成员变量的值是相同的,且不需要对象做修改,这时这个成员变量就可以被static关键字修饰为静态。
从另一个角度也就是说,只要数据在对象中都是不同的,也就是对象的特有数据,必须存在在对象中,则就是非静态的,不能被static关键字修饰为静态。
因此用static关键字定义静态变量的使用场合:**如果是相同数据,且对象不需要做修改,只需要使用,且不需要存储在对象中,则使用static关键字定义成静态。**
**二、静态函数**
我们在7.10static关键字使用细节时说到了静态方法中不能调用非静态成员,且不能使用this关键字,所以对于函数是否使用static关键字修饰,只需要参考一点,就是该函数功能是否有访问到对象中的特有数据。
为了帮助我们理解,我们可以通俗的说,从源码看,该功能是否需要访问非静态成员变量,如果需要,该功能就是非静态的,如果不需要,我们就可以将该功能用static关键字定义成静态函数。
当然,我们也可以定义成非静态,但是非静态需要对象去调用,而当创建了对象却没有访问特有数据的方法,该对象创建是没有意义的。因为我们之前说过对象是用于封装特有数据的,当我们没有访问特有数据,那么我们为什么要创建对象呢?创建的对象只是浪费了堆内存中的空间,再什么也没有做,所以说此时创建对象是没有意义的。
因此用static关键字定义静态函数的使用场合:**如果一个函数不需要访问非静态成员变量,就可以用static关键字定义成静态。**
**
**
这一节我们就简单的说这些吧。
- 前言
- 1.1 基本常识
- 1.2 Java语言概述
- 1.3 Java语言的环境搭建
- 1.4 Java程序开发之初体验--Hello World
- 2.1 关键字
- 2.2 标识符
- 2.3 注释
- 2.4 常量
- 2.5 进制扫盲
- 2.6 变量和数据类型(1)
- 2.7 变量和数据类型(2)
- 2.8 运算符
- 3.1 if语句
- 3.2 switch语句
- 3.3 while和do-while语句
- 3.4 for语句
- 3.5 for循环的嵌套
- 3.6 break语句与continue语句
- 4.1 函数的定义
- 4.2 定义函数的两个明确
- 4.3 函数的内存加载过程
- 4.4 函数的重载
- 5.1 数组的定义
- 5.2 数组的内存分配及特点
- 5.3 数组操作中常见问题
- 5.4 数组常用操作(1)
- 5.5 数组常用操作(2)
- 5.6 二维数组
- 6.1 面向对象的概述
- 6.2 类与对象的关系
- 6.3 对象的内存体现
- 6.4 成员变量与局部变量
- 6.5 类类型参数与匿名对象
- 6.6 基本数据类型参数与引用数据类型参数的传递过程
- 6.7 封装
- 7.1 构造函数概述与默认构造函数
- 7.2 构造函数与一般函数的区别
- 7.3 构造函数的重载
- 7.4 构造函数的内存加载
- 7.5 构造函数需要注意的几个细节
- 7.6 this关键字的原理
- 7.7 this关键字的细节与应用
- 8.1 static关键字之特点
- 8.2 成员变量与静态变量的区别
- 8.3 static关键字使用的注意细节
- 8.4 main函数的解析与细节
- 8.5 static关键字的使用场景
- 8.6 静态的内存加载
- 8.7 静态代码块
- 8.8 构造代码块
- 9.1 继承
- 9.2 单继承与多重继承
- 9.3 子父类中成员变量特征体现