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

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

一、静态变量

我们在7.8节中对statickeyword特点和7.9节中成员变量与静态变量差别进行学习的时候就已经非常明白的指出了静态变量是共享数据,而对象中封装的特有数据。

因此我们能够这样解释:当分析对象中所具备成员变量的值是同样的。且不须要对象做改动,这时这个成员变量就能够被statickeyword修饰为静态。

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

因此用statickeyword定义静态变量的使用场合:假设是同样数据,且对象不须要做改动,仅仅须要使用,且不须要存储在对象中,则使用statickeyword定义成静态。

二、静态函数

我们在7.10statickeyword使用细节时说到了静态方法中不能调用非静态成员。且不能使用thiskeyword,所以对于函数是否使用statickeyword修饰。仅仅须要參考一点,就是该函数功能是否有訪问到对象中的特有数据。

为了帮助我们理解。我们能够通俗的说,从源代码看。该功能是否须要訪问非静态成员变量。假设须要。该功能就是非静态的,假设不须要,我们就能够将该功能用statickeyword定义成静态函数。

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

因此用statickeyword定义静态函数的使用场合:假设一个函数不须要訪问非静态成员变量。就能够用statickeyword定义成静态。



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

[javase学习笔记]-8.5 statickeyword的使用场景的更多相关文章

  1. [javase学习笔记]-8.3 statickeyword使用的注意细节

    这一节我们看静态在使用过程中应注意的几个细节. 上一节我们在学习成员变量与静态变量的差别时,对于两种变量的调用方式不同一时候出现了"无法从静态上下文中訪问非静态变量"的错误.这个问 ...

  2. [javase学习笔记]-8.1 statickeyword之特点

    这一节我们来学习java语言中一个新的keyword就是statickeyword. 当然对于每个keyword,我们都要明白的是它有什么作用,怎么用.我们先来看一个样例: class Person ...

  3. javaSE学习笔记(17)---锁

    javaSE学习笔记(17)---锁 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK 8).使用场景进行举例,为读 ...

  4. javaSE学习笔记(16)---网络编程

    javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...

  5. javaSE学习笔记(15) ---缓冲流、转换流、序列化流

    javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...

  6. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  7. JavaSE学习笔记(13)---线程池、Lambda表达式

    JavaSE学习笔记(13)---线程池.Lambda表达式 1.等待唤醒机制 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同. 比如:线程A用来生成包子的,线程B用 ...

  8. JavaSE学习笔记(12)---线程

    JavaSE学习笔记(12)---线程 多线程 并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在 ...

  9. javaSE学习笔记(11)--- Map

    javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...

随机推荐

  1. [python][django学习篇][2]创建django app

    推荐学校django博客:http://pythonzh.cn/post/8/ django app 可以理解为一个文件夹: 里面包含了相关功能的代码.通过manage.py来创建 web app 激 ...

  2. leetcode NO.171 Excel表列序号 (python实现)

    来源 https://leetcode-cn.com/problems/excel-sheet-column-number/description/ 题目描述 给定一个Excel表格中的列名称,返回其 ...

  3. ZigBee学习一 任务处理函数_ProcessEvent

    ZigBee学习一 任务处理函数_ProcessEvent //任务处理函数UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){ ...

  4. MyEclipse生成get/set注释

    我的外网链接 http://yezi-0016.iteye.com/blog/2290421

  5. 无序字母对 character

    无序字母对 character 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入 ...

  6. 使用 Nginx 过滤网络爬虫

    现在有许多初学者学习网络爬虫,但他们不懂得控制速度,导致服务器资源浪费.通过 Nginx 的简单配置,能过滤一小部分这类爬虫. 方法一:通过 User-Agent 过滤 Nginx 参考配置如下: l ...

  7. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  8. ThreadPool基础之RegisterWaitForSingleObject

    原文发布时间为:2010-10-27 -- 来源于本人的百度文章 [由搬家工具导入] 首先我们看一下它的原型: Codepublic static RegisteredWaitHandle Regis ...

  9. 存储过程中set什么什么的讲解

    原文发布时间为:2008-09-27 -- 来源于本人的百度文章 [由搬家工具导入] set ansi_nulls [on/off] 与 set quoted_identifier [on/off] ...

  10. c语言中的rewind函数,Win CE 不支持,可用fseek函数替换

    FILE *read = fopen(cXmlFile,"rb"); if (read) { fseek(read, 0L, SEEK_END); int len = ftell( ...