黑马程序员技术交流社区
标题:
[已解决]静态变量和非静态变量的区别?
[打印本页]
作者:
黄涛
时间:
2012-7-20 10:02
标题:
[已解决]静态变量和非静态变量的区别?
本帖最后由 黄涛 于 2012-7-20 14:09 编辑
请各位大侠详细说明一下静态变量和非静态变量的区别及相关应用?十分感谢!
作者:
许庭洲
时间:
2012-7-20 10:33
using System;
using System.Collections.Generic;
using System.Text;
namespace Example01
{
class Program
{
class Class1
{
public static String staticStr = "Class";
public String notstaticStr = "Obj";
}
static void Main(string[] args)
{
Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr); //静态变量通过类进行访问,该类所有实例的某一静态变量都是同一个值 ,输出Class1's staticStr: Class
Class1 tmpObj1 = new Class1();
tmpObj1.notstaticStr = "tmpObj1";
Class1 tmpObj2 = new Class1();
tmpObj2.notstaticStr = "tmpObj2";
Console.WriteLine("tmpObj1's notstaticStr: {0}", tmpObj1.notstaticStr); //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值,输出tmpObj1's notstaticStr: tmpObj1
Console.WriteLine("tmpObj2's notstaticStr: {0}", tmpObj2.notstaticStr); //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值,输出tmpObj2's notstaticStr: tmpObj2
Console.ReadLine();
}
}
}
作者:
李根
时间:
2012-7-20 12:07
静态变量与非静态变量的区别如下:
1.内存分配
静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;
而非静态变量需要被实例化后才会分配内存。
2.生存周期
静态变量生存周期为应用程序的存在周期;
非静态变量的存在周期取决于实例化的类的存在周期。
3.调用方式
静态变量只能通过“类.静态变量名”调用,类的实例不能调用;
非静态变量当该变量所在的类被实例化后,可通过实例化的类名直接访问。
4.共享方式
静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值;
非静态变量是局部变量,不共享的。
5.访问方式
静态成员不能访问非静态成员;
非静态成员可以访问静态成员。
作者:
苑占丽
时间:
2012-7-20 13:45
静态变量,随着类的加载而存在于方法区中,
所以其生命周期要长于普通变量。
而普通的非静态变量,如实例变量,随着对象的建立而存在与堆内存中。
静态变量可以用类名.静态变量的形式调用,
而非静态变量,必须通过对象的引用名.非静态变量的形式调用。
作者:
王璐
时间:
2012-7-20 14:04
非静态变量必须创建对象后才能使用
而静态变量
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
作者:
黄涛
时间:
2012-7-20 14:08
谢谢了,我懂了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2