作者:
Flyingis
在我们系统设计中,类方法的功能设计一般是改变对象的状态,以及返回对象的信息。然而在这两种情况之外,还存在一种类型的方法,其设计目的,是专为系统提供某种特定的功能,作为系统专用的一种工具,有的书上称之为“工具方法”,一般情况下,我们会将这类方法设计成静态的,保证系统中所有的代码都可以使用它。在Java API中,最典型的例子之一是java.lang.Math类,它的所有变量、方法都是静态的,专为数学计算而设计。
static double PI; //类变量,代表圆周率
static double abs(double a); //类方法,取双精度浮点类型参数的绝对值
经过关键字static修饰后,对象中的实例变量或实例方法就成为了类变量、类方法,使用静态的好处是,在代码中,我们可以不用创建对象而直接使用类变量和类方法,这样可以简化我们的代码,减少系统的内存开销。例如,在多处需要使用这些方法所提供的功能时,如果使用实例方法,就需要我们创建多个对象来调用这些方法,对于一个规模庞大的系统来说,这通常是不理智的,使用静态方法,可以保证该静态方法仅会存在于系统内存中的一个地址段内。从这里也可以看出,静态方法内应该尽量使用类变量代替实例变量,否则在多次调用静态方法的过程中,会创建多个实例变量,增加系统占用的内存空间。
Java虚拟机第一次加载类的时候,会初始化静态的代码块,这和实例变量和实例方法的加载时间不一样。静态的代码可以存放在一个static代码块中,在类加载的时候一起初始化,但是在static代码块中不能抛出异常:
static {
double i = java.lang.Math.random();
long time = System.currentTimeMillis();
}
现在来理解“静态”,简而言之,就是一旦在系统中生成,其地址就不再改变的变量或方法,因此,静态设计可以为我们提供如下方便:
1.简化或优化代码。
2.减少系统的内存开销。
3.分离出系统中的工具类。
世上少有鱼与熊掌兼得得事,如果漫无目的地使用静态,也会出现一些意外情况。
静态变量在内存中只会存在一份拷贝,而静态设计的目的之一是要为系统提供一系列通用的工具,因此所有的代码都可以对静态变量进行访问或改变它的值,这样容易使设计者对当前变量所存储的值产生疑惑,不知道是谁动了我的“奶酪”。
如果在程序上面静态导入相应的包、类,在程序中可以不使用类名,这样会给代码阅读者带来混淆。静态导入的格式:
import static com.sun.staticClassTools.CommonTool;
静态变量(类变量)的生命周期是从类的第一次加载到应用程序的结束,使用静态变量存储集合通常会带来巨大的内存开销,因为Java垃圾回收不会回收在以静态方式存在的集合对象,直到应用程序终止,哪怕这些集合对象已经不再使用。
静态设计违反OO设计原则,它是非面向对象的,类似于C语言中的全局函数,以过程的思想处理我们的代码。
因此,过度的静态设计会给我们的程序带来包括内存泄漏在内的多种问题,一般情况下,如果可以不使用静态,应该尽量避免,保证系统中的每一处静态设计都有其明确的存在的意义。
分享到:
相关推荐
本资源提供的是一个“图书网站静态设计”的模板,它声称是国外优秀的设计,适用于创建或改造图书相关的在线平台。下面将详细探讨与这个模板相关的知识点。 首先,我们关注的是“静态设计”。静态设计是指不包含...
【EA390发动机前端附件系统静态设计软件开发与系统设计】 EA390发动机前端附件系统(FEAD,Front End Accessory Drive)是汽车发动机的重要组成部分,它负责通过皮带将发动机的动力传递给各种附件,如水泵、空调...
CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计文档CSS与静态设计...
2021年中国大学生计算机设计大赛国赛优秀作品点评微课与教学辅助&数媒静态设计专业组视频提取方式是百度网盘分享地址
2022年中国大学生计算机设计大赛国赛优秀作品点评微课与教学辅助&数媒静态设计专业组视频提取方式是百度网盘分享地址
此maven项目是仿当当网的图书商城,Html,css,js,jquery_实现页面的静态设计等。__Javaweb_dangdang_bookstore
大学生静态网页设计期末作业(必过版),大学生静态网页设计期末作业(必过版)大学生静态网页设计期末作业(必过版)大学生静态网页设计期末作业(必过版)大学生静态网页设计期末作业(必过版)大学生静态网页设计...
19款界面优美的html设计,包含OA系统、物业管理、电子商务网站等等设计
大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计期末作业大学生静态网页设计...
静态网页设计大作业。 静态网页设计期末作业二十四节气HTML静态网页源码。期末作业高分项目、95分项目。静态网页设计大作业。静态网页设计期末作业二十四节气HTML静态网页源码。期末作业高分项目、95分项目。静态...
大学生Web前端静态网页设计期末大作业(高分必看)大学生Web前端静态网页设计期末大作业(高分必看)大学生Web前端静态网页设计期末大作业(高分必看)大学生Web前端静态网页设计期末大作业。大学生Web前端静态网页...
基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用无需修改。 基于HTML+CSS的静态网页设计仿网易云音乐静态页面项目源码.zip 亲测95分以上高分必过项目,下载即用...
本源码采用HTML静态设计,网页清爽整洁,用户体验性能极好,适合个人网站外接,注意以下几点操作:1、在FTP空间根目录下建一个文件夹,名字自定,如/shangcheng,将文件解压后上传到这个文件夹下,运行:http://你的...
大学生静态网页设计期末作业蛋糕店主题静态网页大作业html源码。 网页设计期末大作业,静态网页,HTML,大学生期末必过项目,95分以上,代码含有注释,亲自操作就可以搞定期末作业啦 大学生静态网页设计期末作业...
然而,虽然本项目侧重于静态设计,但JavaScript在现代网页设计中的作用不容忽视。JavaScript是一种客户端脚本语言,可以实现动态交互和实时更新内容。它可以用于表单验证、动画效果、响应式设计等,极大地提升用户...
大学生静态网页设计期末作业源码前端静态网页大作业源码,使用的是原生的 html,css,js 代码,期末作业必过,高分必备。 大学生静态网页设计期末作业源码前端静态网页大作业源码,使用的是原生的 html,css,js ...
标题中的“一套完整的商城静态网页+psd”指的是一个包含所有必要组件的电子商务网站的静态设计资源。这个资源包括HTML文件和PSD文件,适用于手机端和电脑端,这意味着它是响应式的,能够在不同设备上提供良好的用户...
静态网页设计总结报告是关于静态网页设计的总结报告,涵盖了静态网页设计的基本概念、制作过程、布局设计、代码编写等方面的知识点。 一、静态网页设计的基本概念 静态网页是指网页文件中没有程序,只有 HTML 代码...
这种方法允许开发者将静态设计与动态内容分离,简化维护和更新。 **22.3.2 由数据库生成静态页面** 针对访问量大的内容,如新闻或博客文章,可以直接从数据库生成静态HTML页面。首次访问时,系统会动态生成HTML...