当前位置: 首页 > news >正文

5.4静态变量和静态方法

        在介绍静态变量和静态方法之前,首先需要介绍static关键字,因为由static修饰的变量和方法被称为静态变量和静态方法。

        有时,在处理问题时会需要两个类在同一个内存区域共享一个数据。例如,在球类中使用圆周率PI这个值,可能除了本类需要这个值,在另外一个圆类中也需要使用。这时没有必要在两个类中同时创建PI,因为这样系统会将这两个不在同一个类中定义的静态值分配到不同的内存空间中。为了解决这个问题,可以将PI设置为静态的。
被声明为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。语法如下:

类名.静态类成员

        【例1】创建并调用静态属性和静态变量
创建StaticDemo类,在类中使用static关键字定义一个属性和一个方法,并在主方法中调用。

public class StaticDemo{static double PI = 3.1415;    //在类中定义静态变量public static void method(){    //在类中定义静态方法System.out.println("这是静态方法");}public static void main(String[] args){System.out.println(StaticDemo.PI);    //调用静态变量StaticDemo.method();    //调用静态方法}
}

运行结果如下:
3.1415
这是静态方法

注意:
虽然静态成员也可以使用“对象.静态成员”的形式进行调用,但通常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。

        静态变量与静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等。尽管使用这种方式调用静态成员比较方便,但静态成员同样遵循着public、private和protected修饰符的约束。
【例2】统计顾客总人数
在Cust类中创建一个静态整数类型属性count,在构造方法中让count自增。

public class Cust{    //顾客类static int count = 0;    //共享的属性:人数String name;    //名称属性public Cust(String name){this.name = name;    //记录名称count++;    //人数递增}public static void main(String[] args){Cust c1 = new Cust("tom");System.out.println("我是第"+Cust.count+"名顾客,我叫"+c1.name);Cust c2 = new Cust("张三");System.out.println("我是第"+Cust.count+"名顾客,我叫"+c2.name);Cust c3 = new Cust("狗蛋儿");System.out.println("我是第"+Cust.count+"名顾客,我叫"+c3.name);}
}

运行结果如下:
我是第1名顾客,我叫tom

我是第2名顾客,我叫张三

我是第3名顾客,我叫狗蛋儿

        从这个结果可以看出,因为count是用static修饰的,对于所有顾客来说这是一个共享的属性,每创建一个顾客,count这个属性都会加1,所以最后count统计出来的就是顾客的总人数。
如果在执行类时,希望先执行类的初始化动作,可以使用static定义一个静态区域,这块区域被称为静态代码块。当类文件被执行时,会首先执行static块中的程序,并且只会执行一次。静态代码块的语法如下:

public class example{

        static{

                ……        //可以在这里写初始化的代码
}
}

        最后总结以下使用static关键字要注意的几点:
☑ 在静态方法中不可以使用this关键字。
☑ 在静态方法中不可以直接调用非静态方法。
☑ 局部变量不可以使用static关键字声明。
☑主方法必须用static声明。
☑ 只有内部类可以使用static关键字声明。

http://www.dtcms.com/a/538267.html

相关文章:

  • 蓝蜂MQTT网关保障20个户外泵站数据,故障率降70%
  • 实现Docker登录状态定时自动失效的通用方法
  • 广西网站建设推荐全文搜索引擎有哪些
  • 打开无忧管理后台网站厦门网站优化
  • 科技网页制作模板电商网站目录优化
  • 网站名和域名能一样吗wordpress mp4 插件下载
  • 什么是模型的置信度
  • 微网站建设网络网络推广平台有哪些公司
  • 青岛seo网站排名电子商务有什么职业
  • 支持向量检索匹配数据源和具体数据表,SQLBot开源智能问数系统v1.2.1版本发布
  • 网站建设php实验报告内蒙古建筑培训网官网
  • 临淄做网站湖北网站建设费用
  • 然后在亚马逊网站上做外贸wordpress升级php的插件
  • 网站商城功能企业的网站建设与设计论文
  • 百度seo公司整站优化外贸人常去的网站
  • 网站建设与推广中国最厉害的建筑公司
  • 防城港建设局网站wordpress google字体 360
  • linux磁盘分区
  • 手机网站注册页面如果自己弄网站
  • 网站优化塔山双喜建立网站的基本流程
  • 高阳网站建设网站建设中 模板
  • 启迪网站建设招聘旅游景区宣传软文
  • 网页设计与网站建设课程总结怎样用盒子做汽车视频网站
  • 做论坛网站的元素网站建设管理分工
  • 石家庄新钥匙网站建设杭州网站建设公司排名
  • openwrt 网站开发外贸邮箱用哪个比较好
  • 郑州餐饮 网站建设知名企业vi设计
  • 有没有做任务拿佣金的网站营销活动方案模板
  • 沈阳网站icp备案网络营销产品的概念举例
  • 无锡军自考网站建设上海人才网站建设