`
皖雪欢飞
  • 浏览: 25915 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

静态变量和方法的特点

 
阅读更多
→static特点
1、随着类的加载而加载
也就是说:静态会随着类的消失而消失,说明他的生命周期最长
2、优先于对象存在
3、被所有对象所共享
4、可以直接被类名调用
  
→int age(成员变量)实例变量和 static int age(静态成员变量)类变量的区别
1、存放位置
实例变量是随着对象的创建而存在堆内存中
类变量随着类的加载而存在于方法区中
2、生命周期
实例变量随着对象的消失而消失
类变量生命周期最长,随着类的消失而消失

→静态使用注意事项
1、静态方法只能访问静态成员
2、静态方法中不可以定义this,super关键字
因为静态优先于对象存在,所以静态方法中不可以出现this
3、主函数是静态的

→静态的好处和坏处
好处:对对象的数据进行单独空间的存储,节省空间,没有必要每个对象中的存储一份
          可以直接被类名调用(Person.country)
坏处:生命周期过长。
          访问出现局限性。(只能访问静态)

→什么时候使用静态呢?

要从两个方面入手
因为静态修饰的内容有成员变量和成员方法(函数)

什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于堆内存中。

什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态的。


→静态的应用

每一个应用程序都有共性的功能
可以将这些功能进行抽取,独立封装
以便复用。
把成员方法都定义成static的直接用类名调用。

一个类中会有一个默认的构造函数,这个构造函数的权限和所属的类一致
静态代码块
格式:
static
{
    静态代码块中的执行语句;
}
//特点:随着类的加载而执行,只执行一次。用于给类进行初始化。

如下例子:
class StaticCode
{
    static
    {
        System,out.println("a");
    }
}

加载顺序 静态代码块-->构造代码块-->构造函数

对象的初始化过程
Person p = new Person("zhangsan",20);
1、因为new用到了Person.class。所以会先找到Person.class文件并加载到内存中。
2、执行该类中的static代码块(静态代码块),如果有的话,给Person.class类进行初始化
3、在堆内存中开辟空间,非配内存地址
4、在堆内存中建立对象的特有属性,并进行默认初始化
5、对属性进行显示初始化
6、对对象进行构造代码块初始化
7、对对象进行对应的构造函数初始化
8、将内存地址付给栈内存中的p变量
分享到:
评论

相关推荐

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    利用静态变量对函数访问次数计数.zip

    本文将深入探讨如何利用静态变量对函数访问次数进行计数,以及这种方法背后的原理和注意事项。 首先,我们需要理解静态变量的概念。在C++或类似的编程语言中,静态变量有以下特点: 1. 生命周期:静态变量在整个...

    PHP中的静态变量及static静态变量使用详解

    PHP中的静态变量有以下特点和用途: 1. 静态变量的生命周期 静态变量存在于函数作用域内,但是它们的生命周期贯穿整个脚本执行周期。不像普通局部变量在函数调用完毕后即被销毁,静态变量在第一次被声明时初始化,...

    静态方法,静态成员变量的调用

    这段代码展示了静态方法`statMethod`只能访问静态变量`sa`和调用其他静态方法,而不能访问实例变量`ia`或调用实例方法`insMethod`。相反,实例方法`insMethod`可以自由地访问所有类型的成员。 总的来说,静态方法在...

    ios-block的局部变量和全局变量和static的静态变量联系.zip

    在iOS开发中,Block、局部变量、全局变量和静态变量(`static`)是编程中常见的概念,它们各自有自己的特点和用途,同时在特定情况下,它们之间也存在一定的联系。让我们详细探讨一下这些知识点。 首先,Block是...

    静态全局变量,静态局部变量,全局变量,局部变量

    - **静态变量**: 在程序多次调用过程中保持原有的赋值状态不变。 - **变量作用范围**: 通过`static`关键字限定变量的可见性范围。 - **静态存储方式**: 改变变量的存储位置,使之在整个程序运行期间都存在。 - **...

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    - **访问限制**:静态方法只能访问静态成员变量和静态方法,无法直接访问非静态成员变量和方法。 - **不参与多态**:静态方法不受多态的影响,即使在子类中重写了父类的静态方法,调用时仍然根据声明类型来决定执行...

    VB6.0中静态变量和局部变量的区别

    静态变量在函数或过程中声明,其特点是即使函数或过程执行完毕,变量的值也不会被清除,下次再次调用该函数或过程时,它会保留上次的值。在VB6.0中,使用`Static`关键字声明静态变量。下面是一个简单的例子: ```vb...

    局部变量、全局变量、堆、堆栈、静态和全局

    静态变量分为静态局部变量和静态全局变量。静态局部变量只在函数首次调用时初始化,之后每次调用函数时,其值会保留,不会被重置。静态全局变量只在定义它的源文件内可见,避免了全局变量的命名冲突,且其生命周期...

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

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

    静态的魔力:Java中静态方法和变量的深度解析

    在Java中,静态(static)关键字被用来修饰类的成员变量和方法,表示这些成员属于类本身而非类的某个具体实例。这意味着: - **无需实例化即可访问**:静态成员可以在没有创建类的实例的情况下被访问。 - **所有实例...

    PHP static局部静态变量和全局静态变量总结

    局部静态变量是在函数内部定义的,它具有自动初始化和生命周期不随函数调用结束而结束的特点。具体来说: 1. 局部静态变量在函数第一次被调用时初始化,之后即使函数调用结束,该变量依然保持其值不变。当函数再次...

    全局变量、静态全局变量、静态局部变量和局部变量的区别2.pdf

    - **全局变量和静态变量**:如果未手动初始化,则由编译器自动初始化为0。 - **局部变量**:如果不进行初始化,则其值是不确定的,具体取决于编译器的实现细节。 #### 五、示例分析 下面通过一个具体的代码示例来...

    C++类中的静态成员变量和静态成员函数的作用

    在C++编程语言中,类是面向对象编程的基础,它允许程序员定义包含数据成员(变量)和成员函数(方法)的复合数据类型。其中,静态成员变量和静态成员函数具有特殊的特性,它们在类的整个生命周期内共享单一实例,...

    1变量简单小程序VC局部静态变量共3页.pdf.zip

    标题中的“1变量简单小程序VC局部静态变量”指的是在Visual C++(简称VC)编程环境中,使用C++语言编写的一个小型程序,该程序涉及到单个变量的运用,并且重点讲解了局部静态变量的概念和用法。局部静态变量是C++中...

    C#中static静态变量的用法实例

    在C#编程语言中,`static`关键字用于声明静态成员,包括静态变量、静态方法等。这些成员是属于类本身而不是类的实例的,因此,它们在程序执行期间只存储一份,所有类的实例都可以共享。下面我们将详细探讨`static`...

    Java语言中变量和方法的分析及其应用.pdf

    本文通过详细分类说明了变量和方法的概念,并分析了变量和方法在Java程序设计应用过程中的内存分配问题、在继承时的覆盖问题以及静态变量和静态方法的应用问题。同时,本文也给出了部分典型案例,希望能为Java程序...

    易语言静态变量初始化源码.zip

    在编程中,变量是存储数据的容器,而静态变量有别于普通变量,它的特点是生命周期较长且在程序执行期间只被初始化一次。在易语言中,静态变量的使用有以下几个关键点: 1. **声明与初始化**:在易语言中,静态变量...

Global site tag (gtag.js) - Google Analytics