1. 浅谈Java中static关键字的作用

     更新时间:2019年03月26日 14:46:09   作者:完美风暴4   我要评论

    这篇文章主要介绍了Java中static关键字的作用,文中通过示例代码介绍的?#27973;?#35814;细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    static关键字主要有两种作用:

    第一,为?#31243;?#23450;数据类型或对象分配单一的存储空间,而与创建对象的个数无关。

    第二,实现某个方法或属性与类而不是对象关联在一起

    具体而言,在Java语言中,static主要有4中使用情况:成员变量、成员方法、代码块和内部类

    (1)static成员变量:

    Java类提供了两种类型的变量:用static关键?#20013;?#39280;的静态变量和不用static关键?#20013;?#39280;的实例变量。静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可?#21592;?#20351;用了。对静态变量的引用有两种方式,分别是“类.静态变量"和”对象.静态变量"

    实例变量属于对象,只有对象被创建后,实例变量才会被分配内存空间,才能被使用,它在内存中存在多个复制,只有用“对象.实例变量”的方式来引用。

    (2)static成员方法:

    Java中提供了static方法和非static方法。static方法是类的方法,不需要创建对象就可?#21592;?#35843;用,而非static方法是对象的方法,只有对象被创建出来后才可?#21592;?#20351;用

    static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量?#32479;?#21592;方法,因为当static方法被调用时,这个类的对象可能还没被创建,?#35789;?#24050;经被创建了,?#21442;?#27861;确定调用哪个对象的方法。同理,static方法也不能访问非static类型的变量。

    单例设计模式:

    static一个很重要的用途就是实?#20540;?#20363;设计模式。单利模式的特点是?#32654;?#21482;能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过?#32654;?#25552;供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static,程序实例如下:

    class Singleton{
    	private static Singleton instance=null;
    	private Singleton(){}
    	public static Singleton getInstance(){
    		if(instance==null){
    			instance=new Singleton();
    		}
    		return instance;
    	}
    }
    
    

    (3)static代码块

    static代码块在类中是独立于成员变量?#32479;?#21592;函数的代码块的。注意:这些static代码块只会被执行一次

    (4)static与final结合使用表示的意思:

    对于变量,若使用static  final修饰,表示一旦赋值不能修?#27169;?#24182;且通过类名可以访问。
    对于方法,若使用static final修饰,表示该方法不可被覆盖,并且可以通过类名直接访问。

    public class Test{
    	public static int testStatic(){
    		static final int i=0;
    		System.out.println(i++);
    		
    	}
    	public static void main(String[] args){
    		Test test=new Test();
    		test.testStatic();
    	}
    }
    

    上述程序运行的结果:

    A   0      B   1  C    2     D  编译失败

    答案:D

    在Java语言中,不能在成员函数内部定义static变量

    以上所述是小编给大家介绍的Java中static关键字的作用详解整合,希望对大家有所帮助,如果大家有任?#25105;?#38382;请给我留言,小编会及时回复大家的。在此也?#27973;8行?#22823;家对脚本之家网站的支持!

    相关文章

    • Spring MVC 与 CORS跨域的详细介绍

      Spring MVC 与 CORS跨域的详细介绍

      本文介绍了 CORS 的知识以及如何在 Spring MVC 中配置 CORS,具有一定的参考价值,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
      2017-05-05
    • Spark学习?#22987;荢park Streaming的使用

      Spark学习?#22987;荢park Streaming的使用

      这篇文章主要介绍了Spark学习?#22987;荢park Streaming的使用,文中通过示例代码介绍的?#27973;?#35814;细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2019-06-06
    • SSH框架网上商城项目第14战之商城首页UI的设计

      SSH框架网上商城项目第14战之商城首页UI的设计

      这篇文章主要为大家详细介绍了SSH框架网上商城项目第14战之商城首页UI的设计,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
      2016-06-06
    • java基于servlet实现文件上传功能解析

      java基于servlet实现文件上传功能解析

      这篇文章主要为大家详细介绍了java基于servlet实现上传功能,后台使用java实现,前端主要是js的ajax实现,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
      2016-05-05
    • Java观察者设计模式详解

      Java观察者设计模式详解

      这篇文章主要为大家详细介绍了Java观察者设计模式,对观察者设计模式进行分析理解,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
      2016-02-02
    • java实现左旋转字符串

      java实现左旋转字符串

      这篇文章主要为大家详细介绍了java实现左旋转字符串,具有一定的参考价值,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
      2019-03-03
    • 分享15款Java程序员必备的开发工具

      分享15款Java程序员必备的开发工具

      这篇文章主要介绍了分享15款Java程序员必备的开发工具,需要的朋友可以参考下
      2015-02-02
    • mybatis的插件机制示例详解

      mybatis的插件机制示例详解

      这篇文章主要给大家介绍了关于mybatis插件机制的相关资?#24076;?#25991;中通过示例代码介绍的?#27973;?#35814;细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
      2019-06-06
    • java解析XML几种方式小结

      java解析XML几种方式小结

      本文给大家汇总了4种java解析XML的方法,结合具体的示例,?#27973;?#30340;详细,有需要的小伙伴可以参考下
      2016-01-01
    • Java多线程编程中的两种常用并发容器讲解

      Java多线程编程中的两种常用并发容器讲解

      这篇文章主要介绍了Java多线程编程中的两种常用并发容器讲解,分别是ConcurrentHashMap与ConcurrentHashMap,需要的朋友可以参考下
      2015-12-12

    最新评论

    山东群英会开奖查询
      1. 神童透码报正版六角 博彩e族 近500期甘肃快三结果 体彩幸运机 山西快乐10分钟前三 怎么用扑克牌变魔术 新疆35选7开奖说明 香港赛马会连赢赔率 江西时时彩数据源 冰球基本功视频 湖南幸运赛车杀号 海南论坛天涯社区 p3试机号走势图手机彩宝网 香港赛马会资料 双数中特是什么生肖