A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于静态和非静态一直不是很明白,
就知道静态的不能实例化非静态的可以实例化。。。。
然后这俩该怎么合理运用就不懂了。。。。
求大神解答

评分

参与人数 1黑马币 +3 收起 理由
赵宗荣 + 3

查看全部评分

3 个回复

倒序浏览
   静态之所以不能被实例化,是因为在程序运行前,就已经被实例化好了,独立的存在于内存中。
   非静态类会在Main()方法运行后,依次加载进类存。
   
   由于静态是独立的存在于内存中的,所以就可以直接调用不用实例化
               静态类
               例如静态类Console,我没从来没有去实例它,然而却不断的在用Console.WriteLine(); ...
               所以一般情况下,我们将常用的类,或者不想他受程序牵制的时候,就把该类定义成静态的。
               静态变量,静态方法
               当我们需要一个变量,他是全局的,能让我们在程序的任何一个地方都能调用到,我们就把他定义成静态
               方法也是一样
      
               注意:由于静态是独立的存在于内存中,所以会占有内存资源,所以我们尽量避免静态
   

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
用static修饰的变量叫静态变量。静态变量不需要new出对象引用来调用,它可以直接用类名直接调用。当然用对象引用也能调它,只是不需要。
非静态变量则必须用对象引用进行调用。
静态变量在内存空间中只有一份,也永远只有一份。大家共享。
非静态变量只要new出一个对象引用就会在内存中分配一份空间给它。并且他两的存放地点不一样,静态变量存放在栈空间。非静态变量存放在堆空间里。
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马