• Java ------ static 关键字


    一、什么是 static 关键字

               在前面的复习当中,有多次用到 static 关键字,并且也知道了它是创建静态变量或静态方法的必要条件,但是却也不理解,设置静态变量的目的是什么?

               在 java 中有没有 static 的区别是很大的,有没有被 static 修饰的变量或方法在 JVM 虚拟机中所放置的区是不一样的:

                但了解完这些之后,又产生了一个新的问题,为什么 static 的所修饰的代码段要放在方法区内,它的作用是什么?

                     先了解为什么之前,先介绍一下方法区的作用: 方法区的作用是放置一些数据,这些数据有一个特点-------一个程序,都能去调用这个区中的数据,并且方法区放置的数据类型有: 常量、运行时常量池、静态变量、类信息, 简而言之方法区就是放置一些不会改变数据的代码段。

                了解完 static 的基本概念,再想想既然 static 存在于方法区,那么 static 中的数据是可以被调用的,那 static 的数据是在什么创建的呢?和对象的创建哪一个早一点? 

                 在上图中可以看到在栈区有一个 main 的静态方法,然后才去创建新的对象,所以 静态方法的创建比对象的创建要早,并且要补充的是,在方法区中的数据(常量、静态变量等)都是在类加载的过程中被创建出来的

    二、什么时候使用静态变量

               也就是问方法是什么时候定义为静态的?

                      方法描述的是动作,当所有的对象执行这个动作的时候,最终产生影响一样的,那么这个动作不再属于某一个对象的动作了,可以将这个动作提升为类级别的动作,模板级别的动作。

                      其实静态变量的使用是对类的再细分,对不同对象的相同变量进行整合成一,这样可以在创建多个对象的过程中不会重复创建相同的变量,达到减少占用内存存储空间的问题。

    三、静态代码块的作用是什么?用在哪?

              1、和具体的需求相结合,例如在项目中要求在类加载的时刻/时机执行代码完成日志的纪录;

              2、静态代码块是 java 为程序员准备一个特殊的时刻,若希望在此刻执行特殊的程序,就可以使用静态代码块;

              3、通常在静态代码块中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析 XML 配置文件等; 

  • 相关阅读:
    浅谈缓存管理
    [Architecture Pattern] Database Migration (上)
    knockout.js的学习笔记4
    cenOS5.5安装oracle10g(傻瓜篇)
    SportsStore:管理 — 精通ASP.NET MVC 3
    ASP.NET MVC下的异步Action的定义和执行原理
    基于EF 4.3.1 Code First的领域驱动设计实践案例
    asp.net缓存
    《Pro ASP.NET MVC 3 Framework》部署
    Asp.Net MVC 3.0【Hello World!】
  • 原文地址:https://www.cnblogs.com/evething-begins-with-choice/p/12671438.html
Copyright © 2020-2023  润新知