精华内容
下载资源
问答
  • 类加载过程分为五个步骤,加载、连接、初始化、使用、卸载,连接阶段会对静态变量分配内存,并将其初始化为默认值(Java中为0),初始化阶段,如果对静态变量定义了初始值,则将默认值改为初始值。故当我们用静态...

            类加载过程分为五个步骤,加载、连接、初始化、使用、卸载,在连接阶段会对静态变量分配内存,并将其初始化为默认值(Java中为0),初始化阶段,如果对静态变量定义了初始值,则将默认值改为初始值。故当我们用静态变量时,只需要声明了静态变量,如果不对它进行初始化也可以直接用(比如输出System.out.println()),但变量就不行,没有进行初始化不能用。

          public class Main {
          static int p;
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
                   System.out.println(p);       

         }

          结果输出:0

         public class Main {
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
                   int q;
                  System.out.println(q); 

        }

        结果输出:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The local variable q may not have been initialized(没有初始化)

    展开全文
  • 定义在函数中的自动型(就是不用static修饰)数组,函数被调用时才创建,而函数结束后就自动销毁,那么函数执行过程中对它的操作就白费定义成static型后,编译时就为其分配内存空间并永久性保留着,直到程序...

     

    首先要说明,数组不是变量;C中称它是具有相同类型元素的集合,严格说来它是一种简单的数据结构——这是题外话。定义在函数中的自动型(就是不用static修饰)数组,函数被调用时才创建,而函数结束后就自动销毁了,那么函数执行过程中对它的操作就白费了。
    定义成static型后,编译时就为其分配内存空间并永久性保留着,直到程序结束,函数对它的操作就不会丢失了。知道这个原理后,也就知道并不是函数中的数组都得定义成static型,比如操作结果是在屏幕上显示数组内容,那在函数里作显示,这就不必用static了……
    
    

    如果你希望在一个函数中对一个变量只执行一次初始化,以后不再初始化,使用上一次结果,就应该使用静态局部变量。
    例如: static int n; 
    其他类型都可以。

    解决方案二:

    比如说你要在局部计算一个圆的半径,那么你可以将PI的值申请为static,因为PI以后再也不会变更了!希望能够帮到你!

    解决方案三:

    static修饰的变量,可以在任何地方通过类名::变量名的方法访问他的值,比如你要统计一个类创建的次数,就可以给这个类 写个static的变量用来计数

    解决方案四:

    加了static只不过是存储的位置不一样了而已,跟是否局部变量没关系,当然,全局变量加不加static都一样。

    展开全文
  • 深入的剖析C#中静态变量和静态构造函数: 日常的程序开发过程经常会使用到静态...一个类中定义了静态的变量,这个类就肯定会存在静态的构造函数,无论是我们自己定义了静态的构造函数还是不定义静态构造函数,如...

    深入的剖析C#中静态变量和静态构造函数:

    在日常的程序开发过程经常会使用到静态变量,众所周知,静态变量时常驻内存的变量,它的生命周期是从初始化开始一直到Application结束。但是,我们经常会忽略静态变量的初始化时机。一下深入的介绍一下static变量是如何初始化的。

    在一个类中定义了静态的变量,这个类就肯定会存在静态的构造函数,无论是我们自己定义了静态的构造函数还是不定义静态构造函数,如果不定义静态的构造函数,编译器会自动给我们生成默认的静态构造函数。而类的静态变量的初始化的 执行时机就是这个静态构造函数执行的时机,因此找到了静态构造函数的执行时机就等于找到了静态变量初始化的时机。静态变量的执行时机是在第一次new这个类的实例的时候或者第一次引用这个类内的任何一个静态的成员的时候执行的, 而且静态构造函数是.NET自己调用的,而且只会调用一次,以下一段代码有助于童鞋们仔细研究静态变脸的调用时机:

    public class FirstClass
    {
        public static int _FirstVal=1;
        
        static FirstClass()
        {
            _FirstVal = SecondClass._SecondVal + 1;
        }
    }
    
    
    public class SecondClass
    {
    
        public static int _SecondVal;
        
        static SecondClass()
        {
        }
        static void Main()
        {
            Console.WriteLine("FirstVal={0}, SecondVal={1}", FirstClass._FirstVal, SecondClass._SecondVal);
            Console.ReadLine();
        }
    }
    View Code

    以上这段代码,在FirstClass的静态构造函数执行之前_FirstVal为默认的值0,静态构造函数执行完成之后_FirstVal为1,程序运行输出的结果是:FirstVal=1,SecondVal=2。并且以上代码FirstClass的静态构造函数式在SecondClass的静态构造函数之前执行。

    转载于:https://www.cnblogs.com/chengbing2011/p/4267944.html

    展开全文
  • 1. 静态变量的定义 静态变量(Static Variable)计算机编程领域指程序执行前系统就为之静态分配(也即运行时中不再改变分配情况)存储空间的一类变量。...假若定义一个类的过程中定义了一个static修饰的...

    1. 静态变量的定义

    静态变量Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。

    说明:静态变量(用static修饰),它所被分配的空间是一直伴随程序运行的,空间将会保持到程序的结束关闭,才会被释放。

    2.用static修饰的静态变量与普通变量的区别

    假若在定义一个类的过程中,定义了一个static修饰的变量,那么这个类在被加载的同时,被static修饰的变量就存在于内存当中了,这样一来就独立于该类的所有对象,被该类所有对象共享,将对象相关的变成了类相关,基于此静态变量也可以称之为类变量。

    static方法的一个重要中法就是在不创建任何对象的前提下就可以调用它(使用域名调用法直接调用)

    代码说明:

    class Person
    {
         // 定义一个实例变量
         public String name;
         // 定义一个类变量
         public static int eyeNum;
    }
    public class PersonTest
    {
         public static void main(String[] args)
         {
             Person p1 = new Person();
             Person p2 = new Person();
             p1.name = "王";
             p2.name = "向";
             p1.eyeNum = 2;
             p2.eyeNum = 3;
             System.out.println("p1变量的name变量值是:" + p1.name
                 + " p1对象的eyeNum变量值是:" + p1.eyeNum);
             System.out.println("p2变量的name变量值是:" + p2.name
                 + " p2对象的eyeNum变量值是:" + p2.eyeNum);
         }
    }

    运行结果:

    image

    分析:

    在此程序中,我们将eyeNum定义为静态变量(即类变量),而name定义为普通的实例变量。

    当运行Person p1 = new Person()时,代码第一次使用Person类,因此需要加载这个Person类,在类准备阶段,系统将会为该类的类变量分配内存空间,并对其指定初始值。Person初始化完成后,系统将在对内存中为Person类分配一块内存区域。

    image

    系统接着创建Person对象,并将Person对象赋值给p1变量,在此时,Person对象里会包含名为name的实例变量,并对其指定初始值。在此,可以看出eyeNum并不属于Person对象,而是属于Person类。

    image

    接着执行Person p2 = new Person(),代码创建第二个Person对象,因为在第一次创建Person时,已经对Person进行了初始化,Person已经存在于对内存中了,因此,在此创建时,不需要再次进行初始化操作,创建过程同p1,在此不做示意图解释。

    当执行该段代码时

            p1.name = "王";
             p2.name = "向";

    系统会向p1和p2所指向的实例变量分别赋值。

            p1.eyeNum = 2;
             p2.eyeNum = 3;

    当执行到p1.eyeNum = 2 时,将2赋值给类变量eyeNum,当执行到p2.eyeNum = 3时,又将变量3赋值给eyeNum,由于eyeNum静态变量对该类所有对象共享的,因此在执行p2.eyeNum = 3时,会将之前的eyeNum值进行覆盖,因此,输出p1.eyeNum和p2.eyeNum两个值的时候,都会显示最后的赋值结果3.

    image

     

     

    引用static变量的两种方法:

    1. 可以通过对象去定位它:如  p1.eyeNum;

    2. 可以通过其域名直接引用:如 Person.eyeNum; (首选方法)

    注意:静态方法的使用和相应机制与静态变量相同,在此不在解释

    转载于:https://www.cnblogs.com/Leo-Xia/p/10291180.html

    展开全文
  • 然后再编译过程中的区别:静态变量属于静态存储方式,只要程序加载编译当前类的字节码,不需要创建任何实例对象就可以直接调用静态静态变量静态变量在类被编译后直接就会分配内存空间)。实例
  • 静态变量和动态变量区别

    千次阅读 热门讨论 2017-07-01 20:42:46
    机房合作的过程中,我一个类里面定义了一个可读写的属性,当学生登陆系统时,判断学生是否存在,若存在,则把学生的卡号保存到stucardNo里面,等着显示学生信息的时候直接使用,但是出现的问题是:显示学生...
  • 实际开发过程中,我们经常需要配置文件中定义参数,项目中使用,一般我们是这样操作的: 我们配置文件中定义一个变量 : dubbo.provider.version=1.0.0; 给这个变量注入值 :@Value("${dubbo.provider....
  • asp.net中静态变量的应用

    千次阅读 2012-01-10 13:41:20
    .Net平台下进行CS软件开发时,我们经常遇到以后还要用到某些变量上次修改后的值,为了简单起见,很多人都习惯用static来定义这些...如页面统计某个按钮被按下的次数,先OnClick事件的处理过程定义一static变
  • Java类变量和成员变量初始化过程 一、类的初始化 对于类的初始化:类的初始化一般只初始...1) 先按照静态成员变量定义顺序类内部声明成员变量。 2) 再按照原java类对成员变量的初始化顺序进行初始化。 一
  • 作者学习过程中,遇到有关静态代码块的现象,故写此博客记录下来。首先先介绍下static概念当在定义类的时候,类中都会有相应的属性和方法。而属性和方法都是通过创建本类对象调用的。当调用对象的某个方法时,...
  • 静态存储区存放了在整个程序执行过程中都存在的变量静态数据,全局数据和常量。动态存储方式:是指程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区存放的变量是根据程序运行的需要建立或释放...
  • JAVA_关于构造方法与类中静态变量

    千次阅读 2016-04-03 23:08:00
    打算从今天开始记下学习JAVA过程中遇到的一些问题,同时万一我就帮助某些还不明所以的小伙伴,另外哪里有问题欢迎指出,我会更马上更改,首先是关于JAVA中的构造方法还有对象的创建。 (这里搬运下类的定义,书上...
  • JVM中,静态变量之存在一份,虚拟机加载类的过程中静态变量进行初始化,静态变量存储于code cache去,被所有的实例共享,避免成员变量的多存储, 减少jvm年轻代的GC频率 静态变量通常用于定义不会...
  • C/C++ static 静态变量 1

    2017-11-24 16:36:27
    静态局部对象 一个变量如果位于函数的作用域内,但生命期跨越这个函数的多次调用, 这种变量往往很有用。则应该将这样的对象定义为 static(静态的)。...该函数被多次调用的过程中静态局部
  • 定义只读变量:const

    2019-05-15 21:05:57
    const 表示恒定不变的数据,用于定义只读变量的关键字。...我们知道全局变量是静态的,而使用了const的局部变量只是有了静态的特性,并没有说他就是静态变量了,我们知道,局部变量存储静态变量存储...
  • 静态局部变量

    2008-11-06 16:04:00
    一个变量如果位于函数的作用域内,但生命期跨越这个函数的多次调用,这种变量往往很有用。则应该将这样的对象定义为 static...该函数被多次调用的过程中静态局部对象会持续存在并保持它的值。考虑下面的小例子
  • .Net平台下进行CS软件开发时,我们经常遇到以后还要用到某些变量上次修改后的值,为了简单起见,很多人都习惯用static来定义...如页面统计某个按钮被按下的次数,先OnClick事件的处理过程定义一static变...
  • 静态变量的那点事

    2013-01-10 10:40:00
    .Net平台下进行CS软件开发时,我们经常遇到以后还要用到某些变量上次修改后的值,为了简单起见,很多人都习惯用static来定义...如页面统计某个按钮被按下的次数,先OnClick事件的处理过程定义一static...
  • 程序设计的过程中,经常要给变量、函数甚至是一些数据类型起名字(还包括以后的类名,对象名等)。我们把这些用户根据一些规定,自己定义的各种名字统称为标志符(Identifier)。显然,标志符不允许和任何保留字相
  • 近期因为面试原因,又重新复习一下闭包,于是逛各大社区,看各种JS书籍对闭包的定义和举例,这过程中发现一个很有意思的东西:静态私有变量,所以这里把一些心得和总结和大家分享一下,下面直接上代码 ...
  • android的全局变量定义与使用

    千次阅读 2015-09-29 13:32:38
    android中的全局变量定义与使用平时的开发过程中,有时候可能会需要一些全局数据,来让应用中的所有Activity和View都能访问到,大家遇到这种情况时,可能首先会想到自己定义一个类,然后创建很多静态成员,...
  • 是为了方便我们在定义了变量zhi以后使用的时候dao直观的区分这些变量. C++不是完全面向对象的开发语言,同C语言一样,它有全局变量,这个变量不属于任何一个类. 这些全局变量,你的程序任何地方都可以访问到这个变量 ...
  • 变量在内存的存储

    千次阅读 2016-04-04 18:26:36
    全局变量和静态变量编译的时候就已经分配好在数据段,也就是说执行main函数之前就已经分配好地址,如果定义的时候已经初始化,那么就存放初始化的值,如果没有初始化,则由编译器初始化为0。这就说明整个...
  • 编译器生成的class文件主要对定义在源文件的类进行如下的更改:1) 先按照静态成员变量定义顺序类内部声明成员变量。2) 再按照原java类对成员变量的初始化顺序进行初始化。一个java类和编译后的class对应的...
  • 编译器生成的class文件主要对定义在源文件的类进行如下的更改:先按照静态成员变量定义顺序类内部声明成员变量。再按照原java类对成员变量的初始化顺序进行初始化。一个java类和编译后的class对应的转换...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552
精华内容 220
关键字:

在过程中定义了静态变量