`

Static那些年你没有搞懂过的静态

阅读更多

【前言】:

之所以今天回来再讲一次Static,是因为确实当年学的也是稀里糊涂,对于java来说不要说精通,还远远达不到熟练,所以如果硬要形容自己的java水平,就如同一门语言一样,仅限于交流。沟通无障碍,所以这段时间重新梳理一下,捡一下,生活丢丢捡捡是正常的,毕竟我们不能像走路一样熟悉来熟悉某些事物。

===================================================================================

【static变量】:

         我们从本质理解,就是java声明了一个全局变量,尽管全局变量是存在于C和C++的,(就像有着天敌关系似得,每次作比较,C,C++总会出现,这一对好基友一直在为java一些知识体系的解释做着贡献)然而在java里static声明的变量,我们可以把它理解成全局变量。

                         ===========================================

                代码层面的理解:

                                        

package Test;

public class StaticExample {
	    public static int counter;
	    

}

 

此时counter就已经成为了全局变量,在代码执行之前,counter这个变量就存在内存中了,作为Test类唯一实例。

这个实例是不管Test类中建了多少个实例,counter也只是一个,而且就当Test里面其他实例被gc,被虚拟机垃圾回收机制回收,counter也仍然存在于内存中。

这种静态变量的特性,经常被用于单实例中:

    (什么是单实例:单实例设可能是使用最广泛的设计模式。其思想意图是保证一个类只有一个实例,并且提供类对象的全程访问。

public class StaticExample {
	    //单实例
	    public static StaticExample staticExample=null;
	    //构造函数声明为private,这样避免类的外部用new创建对象;
	    private StaticExample(){};
	    //外界调用方法
	    public static StaticExample getStaticExample(){
	    	if(null==staticExample){
	    		staticExample=new StaticExample();
	    	}
	    	
	    	return staticExample;
	    }
	    

}

 

==================================================================================

【static方法】:

Java修养:

一个方法,如果仅依赖方法的传入参数,其他的static变量,这样看来,这个方法不依赖于类实例,则这样的方法应该被声明为static。表示此方法是类方法,而非实例方法。

代码举例:

public class UtilDemo {
	public static int toInt(String s){
		return Integer.parseInt(s);
	}
//	int value=UtilDemo.toInt(str);

}

 

这一种则直接int value=UtilDemo.toInt(str);就可以调用,没必要实例化一个对象再去调用,创建这样的对象纯粹是浪费。
=================================================================================
【static类嵌套类】:
可惜的是java类是不能用static修饰的,因为是非法的,而在C C++里如果一个类被static修饰,则里面所有成员变量和方法都是静态了。
嵌套类可以用static修饰。但又有另外的含义。
分享到:
评论

相关推荐

    Java中的Static块与静态方法

    在Java编程语言中,`static`关键字扮演着至关重要的角色,它被用于声明类成员(如变量、方法)为静态的。静态成员不依赖于任何特定的对象实例,而是与类本身绑定,这意味着无论该类有多少个实例,静态成员只会有一份...

    静态(static)方法重写(override)

    ### 静态(static)方法与重写(override) #### 一、概念解析 在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时...

    zblog全站静态化 1.5static.zip

    4. **安全增强**:静态页面没有动态脚本,降低了SQL注入等安全风险。 在ZBlog中实现全站静态化,通常需要借助专门的插件,如本例中的“1.5static.zip”。安装和配置这类插件通常包括以下步骤: 1. 下载并解压插件...

    static静态变量使用@Value注入方式.md

    ### static静态变量使用@Value注入方式 #### 一、引言 在Java开发中,特别是基于Spring框架的应用程序中,开发者经常会遇到需要为类中的成员变量注入外部配置值的情况。Spring框架提供了多种注入机制,其中`@Value...

    static静态局部变量的妙用

    ### static静态局部变量的妙用 #### 一、引言 在软件开发和程序设计领域,合理运用各种语言特性能够显著提升代码的质量与效率。其中,`static`关键字就是一个非常实用的功能,在C/C++等语言中有着广泛的应用场景。...

    Qt 5.15.1 MSVC static 静态编译包

    6. **编译项目**:现在,你的项目应该能够链接到静态编译的Qt库,并生成一个独立的可执行文件。 在压缩包文件`msvc-static`中,通常会包含所有静态编译的Qt库文件,以及必要的头文件和库文件。这些文件是编译过程的...

    qt5.15.9-static 静态编译库,已经编译完毕,直接安装即可

    静态编译的QT5.15.9库使得程序可以在没有安装QT环境的计算机上运行,简化了分发和部署过程。 在实际开发中,开发者还需要了解如何正确地链接静态库,避免可能出现的符号冲突和内存管理问题。此外,由于静态库文件较...

    Java static静态初始快

    在Java编程语言中,`static`关键字扮演着重要的角色,特别是在初始化类的静态成员时。`static`静态初始化块是用来初始化类级别的变量,也就是说,这些变量是属于类本身,而不是类的实例。当我们讨论“Java static...

    Static静态变量的应用(VB6.0代码编写)

    总的来说,Static静态变量是VB6.0编程中一个强大的工具,合理利用可以解决许多实际问题,但同时也需要谨慎处理,以确保代码的健壮性和效率。在实际编程中,我们需要根据具体需求权衡是否使用Static变量,以及如何...

    unity3d-static选项

    静态选项背后包含了多种技术,例如 Lightmap Static、Occluder Static、Occludee Static 和 Navigation Static。这些技术都是为了优化游戏性能和大小的。 Lightmap Static 是用于生成光照贴图,使场景进行优化。...

    什么是静态(static)什么是静态方法,静态变量,静态块

    在Java编程语言中,"静态"(static)关键字是一个非常重要的概念,它具有多种用途,包括定义静态变量、静态方法、静态初始化块以及静态类。理解这些概念对于编写高效的Java代码至关重要。 首先,我们来解释静态变量...

    Qt 5.4.2 MinGW32 static 静态编译 版本打包

    为了验证静态编译的正确性,可以创建一个简单的Qt应用并链接这些静态库,确保程序在没有Qt环境的机器上也能正常运行。 **四、注意事项** 1. **内存需求**:静态编译过程可能会占用大量内存,确保编译机器有足够的...

    wordpress插件纯静态html网页页面生成插件simply-static

    simply-static是一个简单的一键生成全站静态html文件的wordpress插件,支持生成或不生成指定url的html文件,生成文件的资源路径可选相对路径、绝对路径和脱机文件,html文件可以直接生成在服务器或zip压缩包下载。...

    Vue3的js代码:可放入static静态目录的js文件下使用前端vue框架

    Vue3的js代码:可放入static静态目录的js文件下使用前端vue框架

    全自动静态网页生成器StaticHtml

    StaticHtml是一款全自动静态网页生成器,它旨在帮助用户将动态网站快速转化为静态HTML页面,以提高网站的加载速度和搜索引擎优化。使用此类工具的主要原因是静态网页对于访问者来说加载更快,同时降低了服务器处理...

    node.js中express.static 托管静态文件

    然而,对于那些不需要服务器处理的静态资源,如网页的样式表(CSS)、图像或者JavaScript库,我们可以直接从文件系统中提供,这正是`express.static`的目的。 例如,假设你有一个名为"public"的目录,里面存储了...

    vs2019下能用的qt5.15.2 64位静态库 static

    vs2019下能用的qt5.15.2 64位静态库 static

    mysqlconn-static vs2015静态库文件

    1. mysqlconn-static vs2015静态编译 2. 分为mt和md两种版本,按需链接即可。 3. 依赖libmysql.dll 4. 编译时,头文件需要包含include中的引用jdbc和boost库。 5. 由于是静态编译,所有需要包含预编译头:CPPCONN_...

    面向过程设计中的static静态成员

    面向过程设计中的`static`关键字主要用于定义静态全局变量、静态局部变量和静态函数,这些特性在C++编程中具有特殊的意义。下面将详细介绍这三个方面的内容。 1. 静态全局变量 静态全局变量在全局数据区分配内存,...

Global site tag (gtag.js) - Google Analytics