前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >static示例

static示例

作者头像
孙晨c
发布2019-09-10 19:27:03
8870
发布2019-09-10 19:27:03
举报
文章被收录于专栏:无题~无题~

求生成对象的个数

代码语言:javascript
复制
 1 class A{
 2     private int i;
 3     private static int cnt = 0; 
 4     //此处用static修饰,让cnt属于类,多个对象共用一个属性,减少内存分配
 5     
 6     public A(){ //new对象时,会自动执行无参构造方法
 7         cnt++;//对象个数+1
 8     }
 9     
10     //无参构造方法和有参构造方法在new对象时必须执行并且只能执行其中一个
11     
12     public A(int i){//new对象并且传值时会调用有参构造方法
13         this.i = i; 
14         cnt++;//对象个数+1
15     }
16     
17     pUblic static int getCnt(){//用static修饰,属于类,通过类名直接调用
18         return cnt; //返回A对象的个数
19     }
20 }
21 
22 public class TestStatic{
23     public static void main(String[] args){
24         System.out.printf("当前A对象个数是:%d个",A.getCnt());//0个
25         A a1 = new A();
26         System.out.printf("当前A对象个数是:%d个",A.getCnt());//1个
27         A a2 = new A();
28         System.out.printf("当前A对象个数是:%d个",A.getCnt());//2个
29         A a3 = new A();
30         System.out.printf("当前A对象个数是:%d个",A.getCnt());//3个
31     }
32 }

限制:只生成一个对象

代码语言:javascript
复制
 1 class A{
 2     public int i = 20;
 3     private static A a = new A();  
 4       //a既是A类的对象,也是A类的属性!指向a本身
 5       //此处的static不能省略,下面的getA方法将会访问a对象(属性)
 6       //不然静态方法将不能访问非静态成员
 7     
 8     private A(){ //将构造方法设置为私有,这样就只能在本类里面创建对象
 9     }
10     
11     public static A getA(){
12     //返回值类型是A,是一个地址类型,对象a的地址    
13     //在其他类调用getA()方法,可以得到a对象
14     //注意此方法必须设置为static静态的,其他类可以不创建对象就能访问
15         return a;
16     }
17 }
18 
19 public class TestStatic{
20     public static void main(String[] args){
21         A a1 = A.getA();
22         A a2 = A.getA();
23         a1.i = 99;
24         System.out.printf("%d",aa2.i); //输出99,说明a1和a2是同一个对象
25           //因为a1和a2的对象地址都是同一个getA()方法返回的a对象地址
26     }
27 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 求生成对象的个数
  • 限制:只生成一个对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档