[javase学习笔记]-8.5 statickeyword的使用场景

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

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

一、静态变量

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

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

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

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

二、静态函数

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

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

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

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

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

时间: 2024-10-10 21:59:30

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

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

这一节我们来学习java语言中一个新的keyword就是statickeyword. 当然对于每个keyword,我们都要明白的是它有什么作用,怎么用.我们先来看一个样例: class Person { String name;//姓名 String country = "中国";//国籍 public void printInfo() { System.out.println(name+":"+country); } } class StaticTest { pu

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

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

Unity3D学习笔记之七创建自己的游戏场景

到现在为止我们已经拥有了比较完备的Prefab,已经可以创建宏大的游戏场景,并以第一人称视角在场景中漫游了.这里给大家做个小的示范,建一个小场景大家在创建场景的时候需要自由发挥,做个尽量大的场景出来. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 我们以最初的添加了First Person Controller的PFB_Straight为整个场景的中心点来展开.我们先从Project中Prefabs文件夹拖出来

Android(java)学习笔记233: 远程服务的应用场景(移动支付案例)

一. 移动支付:       用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号.密码以及金额等数据都是比较敏感的数据,这些数据不能让外界获取.       阿里等等支付宝平台把支付的逻辑封装起来,只给我们提供一个方法去调用,这样提高了安全性.当我们用户提交账号.密码以及金额等数据,点击"支付"的时候,支付宝平台已经调用方法加密数据(这个支付逻辑是远程服务,为了安全,防

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

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

JavaSE学习笔记(一)———Java简介与基础

一.  Java语言简介 1.1           计算机语言的发展过程 计算机语言发展主要分为三个阶段: 1.第一代:机器语言 2.第二代:低级语言 3.第三代:高级语言 1.2           Java发展简史 1.Java 是一种程序开发语言,既然是一门语言,就像其他语言一样,具备一定的语法 和自己的数据结构. 2.Java语言来源于sun公司,sun指的是斯坦福大学网络.由james gosling领导并开发. Java语言的具体发展历程 1991~1995  Sun 为了占领智能

javaSE学习笔记—HTTP协议(10)

客户端浏览器和服务器Tomcat要进行基本的请求和响应的处理. 其实浏览器和服务器通信的数据的格式已经使用协议进行固定好了,只要双方发送固定格式的数据,那么就可以完成基本的通信. 如果开发者需要查看这样的数据格式,那么就需要安装一个浏览器的HTTP协议相关的插件. 如果要深入的学习浏览器和服务器通信的数据,那么需要详细的掌握他们之间发送的数据内容. 1  请求信息 GET / HTTP/1.1 ? 请求行 Accept: */* Accept-Language: zh-cn,en-US;q=0.

[javase学习笔记]-8.2 成员变量与静态变量的差别

这一节我们看一看成员变量与静态变量的差别所在. 什么是静态变量呢?我们上节用statickeyword时就提到了静态变量.也就是说用statickeyword修饰的变量就是静态变量. 我们在6.4节学习了成员变量与局部变量的差别.这一节我们重点看看成员变量与静态变量之间的差别. 我们看代码: class Person { String name;//姓名,这是一个成员变量 static String country = "中国";//国籍,这是一个静态变量 public void pr

[javase学习笔记]-8.7 静态代码块

这一节我们看一个比較特殊的概念,那就是静态代码块. 前面我们也提到过代码块,就是一段独立的代码空间.那么什么是静态代码块呢?说白了,就是用statickeyword修饰的代码块. 我们来看一个样例: class StaticBlock { static { System.out.println("静态代码块被运行"); } void myPrint() { System.out.println("myPrint方法运行"); } } class StaticBloc