zoukankan      html  css  js  c++  java
  • 静态、构造方法

    Java笔记中已经有关于静态的说明,C#学习中,再次记录下。

    同一静态变量或方法,共享内存,共用同一块内存区域。其值会被多个对象改变。

    可以理解为,盒子中只有一个苹果,张三咬了一口,李四从此盒子中拿取苹果时,是被咬过的苹果。

    同一命名空间下的所有类都可以使用或改变全局静态变量,它只保留最新值。如在类GlobalVariable中定义了public static string Result,那么在其他类中可以GlobalVariable.Result="最新值",或使用GlobalVariable.Result。

    静态变量先按顺序分配内存,全部分配完后,再按顺序赋值。(两轮)

    分配内存时:整型数据默认值为0,单精度数据为0.0f,双精度数据为0.0,布尔型数据为False,引用型数据string为null。

    new类的对象时,这个类内的所有变量已赋值完毕

    class class1
        {
            static int i = getNum();
            int j = getNum();
     
            static int num = 1;
            
            static int getNum()
            {
                return num;
            }
     
            static void Main(string[] args) //静态方法中,可以直接用静态变量,或对象.非静态变量。
            {
                Console.WriteLine("i={0}",i); //静态变量
                Console.WriteLine("j={0}", new class1().j); //对象.非静态变量
                Console.Read();
            }
        }

    以上代码过程如下:

    1、静态变量由上到下先初始化,i,num都为0,静态方法getNum返回的num=0。

    2、静态变量由上到下赋值,i等于getNum方法的返回值0,num=1,静态方法getNum返回的num=1

    3、new class1()后,class1中的量,都已赋值完毕。即此时j=1

    所以最终,i=0,j=1

    【实例】静态方法只能被创建一次(内存唯一),非静态方法可被多次创建。

    namespace ConsoleApplication1
    {
        class Program
        {
            static Program() //构造方法
            {
                Console.WriteLine("静态方法");
            }
            private Program() //构造方法
            {
                Console.WriteLine("非静态方法");
            }
            static void Main(string[] args)
            {
                Program p1 = new Program() ;
                Program p2 = new Program();
                Program p3 = new Program();
            }
        }
    }

    关于构造方法:方法名与类名相同的方法被称作构造方法。

    特点如下:

    1、没有返回类型,甚至连void也没有。

    2、构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

    3、构造方法在创建对象时自动执行,一般不能显式地直接调用。

    4、每个类可以有零个或多个构造方法。

    5、不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。

    【参考】

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

    面向对象(静态变量和成员变量的区别)

  • 相关阅读:
    js面向对象的程序设计 --- 上篇(理解对象)
    js基础 之 引用类型
    js基础之--变量 作用域和内存问题
    js基础心得
    一些转载的知识点
    linux打印指定的行的内容
    R画柱形图和箱线图
    Meerkat软件
    bam文件格式说明
    STAR软件的学习
  • 原文地址:https://www.cnblogs.com/xixixing/p/10787624.html
Copyright © 2011-2022 走看看