[javase学习笔记]-7.12 static关键字的使用场景

这一节我们来看一下在我们开发的过程中,在什么时候我们要用到static关键字进行静态修饰。

我们这里所说的静态,无非就是两种,一种是静态变量,一种是静态函数,我们分这两种情况进行说明static关键字的使用场合。

一、静态变量

我们在7.8节中对static关键字特点和7.9节中成员变量与静态变量区别进行学习的时候就已经很明确的指出了静态变量是共享数据,而对象中封装的特有数据。

因此我们可以这样解释:当分析对象中所具备成员变量的值是相同的,且不需要对象做修改,这时这个成员变量就可以被static关键字修饰为静态。

从另一个角度也就是说,只要数据在对象中都是不同的,也就是对象的特有数据,必须存在在对象中,则就是非静态的,不能被static关键字修饰为静态。

因此用static关键字定义静态变量的使用场合:如果是相同数据,且对象不需要做修改,只需要使用,且不需要存储在对象中,则使用static关键字定义成静态。

二、静态函数

我们在7.10static关键字使用细节时说到了静态方法中不能调用非静态成员,且不能使用this关键字,所以对于函数是否使用static关键字修饰,只需要参考一点,就是该函数功能是否有访问到对象中的特有数据。

为了帮助我们理解,我们可以通俗的说,从源码看,该功能是否需要访问非静态成员变量,如果需要,该功能就是非静态的,如果不需要,我们就可以将该功能用static关键字定义成静态函数。

当然,我们也可以定义成非静态,但是非静态需要对象去调用,而当创建了对象却没有访问特有数据的方法,该对象创建是没有意义的。因为我们之前说过对象是用于封装特有数据的,当我们没有访问特有数据,那么我们为什么要创建对象呢?创建的对象只是浪费了堆内存中的空间,再什么也没有做,所以说此时创建对象是没有意义的。

因此用static关键字定义静态函数的使用场合:如果一个函数不需要访问非静态成员变量,就可以用static关键字定义成静态。

这一节我们就简单的说这些吧。

时间: 2024-08-07 04:22:03

[javase学习笔记]-7.12 static关键字的使用场景的相关文章

Java学习笔记四:static关键字

1.static表示什么? static表示"全局"或者"静态"的意思.在Java中没有全局变量的概念,static 可以简单的理解为全局的,独立的一个功能. (1)当我们在使用 static 修饰成员变量或者成员方法的时候,通常会在Java内存中为这些变量或者方法指定了一块独立的区域(这块区域可能在栈中,也有可能在堆中). (2)如果静态的变量或方法在不出其作用域的情况下,其 引用句柄是不会发生改变的. (3)这块区域是内存共享的,它的引用都指向同一个位置,就是说

[javase学习笔记]-7.6 this关键字之原理

这一节我们来讲一个关键字,就是this关键字. 我们还是通过例子来看吧: class Person { private String name; private int age; Person(String n,int a) { name = n; age = a; } public void speak() { System.out.println(name+":"+age); } } class ThisTest { public static void main(String[]

javasE学习笔记:关键字super的使用

/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. 注意: 子类的构造方法中一定要调用父类的构造方法.... */ javasE学习笔记:关键字super的使用,布布扣,bubuko.com

java学习笔记之面向对象static,final关键字

java学习笔记之面向对象static,final关键字 一.static关键字 1.概述: static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中. 2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值) /* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */ 3.static的特点 /* 1.在同一个类中,静态成员只能访问静态成员,非静

Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程

C和指针笔记 3.8 static关键字

当用于不同的上下文环境时,static关键字具有不同的意思. 当它用于函数定义时,或用于代码块之外的变量声明时,static关键字用于修改标识符的链接属性,从external改为internal,但标识符的存储类型和作用域不受影响.用这种方式声明的函数或变量只能在声明它们的源文件中访问. 当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,从自动变量修改为静态变量,但变量的链接属性和作用域不受影响.用这种方式声明的变量在程序执行之前创建,并在程序的整个执行期间一起存在,而不

C++学习笔记7,const关键字的使用(一)。

在C++里面,const关键字的用处很多,使用好const关键字对程序的健壮性大有好处. 首先来看看const一般都用在什么地方. 1.用于定义常量. const用的最多的就是用来定义常量了. const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误. 一个最简单的例子: #include <iostream> using namespace std; int main() { cons

JavaSE学习笔记(五)——类与对象

一.  类和对象 1.1           面向对象与面向过程的区别 1.面向过程 采用面向过程必须了解整个过程,每个步骤都有因果关系,每个因果关系都构成了一个步骤,多个步骤就构成了一个系统,因为存在因果关系每个步骤很难分离,非常紧密,耦合度高,当任何一步骤出现问题,将会影响到所有的系统.如:采用面向过程生产电脑,那么他不会分CPU.主板和硬盘,它会按照电脑的工作流程一次成型. 2.面向对象 面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起

[javase学习笔记]-7.13 静态的内存加载

之前几节我们一直在说static关键字所修饰的静态,那么在程序运行时,内存中static是如何体现的呢?这一节我们就来看一看. 我们还是先看一个例子,希望我们通过对这个例子的分析让我们初学者们对static所修饰的静态在内存中的具体体现有一个深刻的理解. class Person { String name;//姓名,这是一个成员变量 int age; static String country = "美国";//国籍,这是一个静态变量 Person(String name,int a