当前位置:  技术问答>java相关

有兴趣的朋友跟我谈谈java中的关键字:static

    来源: 互联网  发布时间:2015-05-07

    本文导语:  一开始理解static是静态的,是永远不变的,后来有理解为static是常驻内存的,占用一个空间以后,将永不释放。请各位考察一下代码:   //Untitled1.java   public  class  Untitled1  {      public  static  int  x=0;   }...

一开始理解static是静态的,是永远不变的,后来有理解为static是常驻内存的,占用一个空间以后,将永不释放。请各位考察一下代码:  
//Untitled1.java  
public  class  Untitled1  {  
   public  static  int  x=0;  
}  
//Untitled2.java  
public  class  Untitled2  {  
   public  static  void  main(String[]  args)  {  
       System.out.println(Untitled1.x);  
       Untitled1.x++;  
   }  
}  
//Untitled3.java  
public  class  Untitled3  {  
   public  static  void  main(String[]  args)  {  
       System.out.println(Untitled1.x);  
       Untitled1.x++;  
   }  
}  
 
我的本意是想每次启动Untitled2或者Untitled3都能够让X加1,第一次运行Untitled2,结果为0,第二次运行结果要为1,第三次运行结果为2,如此类推,可我每次运行的结果都是0。  
 
请问各位有什么好的方法能实现我的原意吗?  
 
谢谢!!!  
 

|
如果你是要实现那种功能。
public  class  Untitled1  {  
   private  int x=0;
   private static Untitled1 u=null;
   private Untitled1()
   {}
   public static Untitled1 getInstance()
  {
    if(u!=null)
      return u;
    else
    {
       return new Untitled1();
    }
   }
    public void addX()
   {
     x++;
    }
public int getX()
{
    return x;
}
}

}  

 在Untitled2,Untiled3中
getInstance().addX();
其实这就是设计模式中的singleton模式。他每次都返回原来的实例。
  

|
static 表示该成员在没有实例化对象的情况下也可以使用。是吗?
那你那种方式肯定不行吧。

|
我的理解:
你这样的每次重新运行的时候,Untitled1都是第一次调用的,如果实现你的问题的时候,你应该保证Untitled2,Untitled3在同一个java调用中,免得每次调用Untitled1时,它都重新初始化。

解决方法:
1实现系列化接口
2用一个文件来存储,如何采用单一实例的方法!

|
其实你的那种调用方法不可能得到你要的结果的
因为Untitled2和Untitled3运行时虚拟机建立的是不同的内存堆,
也就是说他们每次运行都会建立新的静态区!静态区仍然不能脱离实际运行环境存在,所以出现了这种结果!

静态对象通常用于在不同的对象之间共享数据的。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有兴趣的看一下
  • 关于兴趣与专业
  • QT群QQ:2966118. 有兴趣的可以加入,
  • 创建debian群。 有兴趣者进
  • 新建 一 LINUX C语言编程交流群 大家若有兴趣就加入一起交流哈
  • 有兴趣的过来看一看!
  • 有一个问题偶很感兴趣,可不知如何实现,请大家帮忙
  • 有人对AOP感兴趣么?
  • 和DES有关的JAVA问题,有兴趣的请进
  • 这里人好少啊!对桌面Linux开发有兴趣的请进
  • 有兴趣的来看看,谢谢
  • 忽然对emacs产生兴趣,求介绍用法及网址(中文)?
  • 有兴趣可以看看
  • 我对java比较感兴趣??学习。。
  • ComboBox 的一个问题有兴趣的进来看一看!!!
  • 基本数据类型转换long------>float,对内存感兴趣的请进!
  • 对OSI,TCP/IP,unix网络编程,winsock感兴趣的同学,欢迎加入qq群
  • 期中考试题,有兴趣的看看!
  • 寒假IBM讲师主讲Java认证(scjp)EJB,特价优惠,感兴趣的请进。
  • 推荐java站点:这个站点上的内容是全体成员辛苦劳动的成果,上面会有你感兴趣的东西,


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3