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

第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。

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

简单来说,在Java语言中,static主要有5中使用情况:成员变量、成员方法、代码块,内部类和静态导包。

基本用法:

  1. static修饰成员变量:该成员变量属于类变量,可以通过 ClassName.attributeName 直接引用,而不需要new出类的实例。
  2. static修饰成员方法:该方法属于类的方法,可以通过 ClassName.methodName 直接引用,而不需要new出类的实例。
  3. static修饰代码块:仅在类初始化的时候执行一次,且加载顺序是严格按照类中静态资源的定义顺序来加载的;静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。;父类代码块->子类代码块。
  4. static修饰内部类:static不能修饰普通类,只能修饰内部类,被static修饰的内部类的创建方式: new OuterClass.InnerClass()。
  5. static导入包:语法“import static java.lang.Math.*”,这样在类中就可以直接使用Math类中的静态方法而不需要写类名,个人认为,在频繁使用某个类的时候比较方便,但是降低了可读性。并且不建议导入*

下面分别举例说明static的各种用法

static修饰成员变量和成员方法

  几个结论:

  1. /**
  2. *
  3. * Created by ascend on 2017/6/9 13:51.
  4. */
  5. public class Test {
  6. public static void main(String[] args) throws ClassNotFoundException {
  7. Class.forName("net.liebao.test.A");
  8. }
  9. }
  10.  
  11. class A {
  12. static {
  13. System.out.println("A.static initializer");
  14. }
  15.  
  16. public A() {
  17. System.out.println("A.A");
  18. }
  19. }

输出:

  1. A.static initializer

  结论一:静态资源属于类,但是独立于类,静态资源在类初始化的时候被加载(早于new),比如通过:Class.forName(“xxx”)可以加载一个类的静态资源,但是没有new。

  结论二:静态资源(静态成员变量,静态成员方法,下同)不能访问非静态资源,非静态资源是new时候才会产生,所以不能访问,反之,非静态资源则可以访问静态资源。

  结论三:静态资源可以访问静态资源,但是需要注意的是,静态资源可以为定义在它之后的静态资源赋值,但是不能访问定义在它之后的静态资源

另外一个常见的用途是static实现单例模式

  我们都知道,单例模式的特点是该类只能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过该类提供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static,程序实例如下:

  1. class Singleton {
  2. private static Singleton instance = new Singleton();
  3. //私有化构造函数
  4. private Singleton(){}
  5. public static Singleton getInstance(){
  6. return instance;
  7. }
  8. }  

上面的单例模式是饿汉模式;

码字不易,尊重原创,转载请注明:http://www.cnblogs.com/adeng/p/6971366.html

java中static关键字的作用的更多相关文章

  1. Java中static关键字的作用和用法详细介绍

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何 ...

  2. 【Java_基础】Java中Native关键字的作用

    本篇博文转载与:Java中Native关键字的作用

  3. Java:Java中static关键字作用

    static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static修饰的方法属于类方法,可以通过类名.方法名直接引用 ...

  4. [java基础]java中static关键字

    1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序 ...

  5. Java中Native关键字的作用

    初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学 ...

  6. java中static关键字解析

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

  7. java中final 关键字的作用

    final 关键字的作用 java中的final关键字可以用来声明成员变量.本地变量.类.方法,并且经常和static一起使用声明常量. final关键字的含义: final在Java中是一个保留的关 ...

  8. 【转】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  9. 关于java中Static关键字的加强理解

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

随机推荐

  1. java映射(map用法)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...

  2. js闭包(closure),个人理解

    一.闭包概念理解 各种专业文献上对js"闭包"(closure)定义非常抽象,贼难看懂.我的理解是,闭包就是能够读取某函数内部变量的函数.由于在Javascript语言中只有在函数 ...

  3. angularjs中常用的ng指令介绍【转载】

    原文:http://www.cnblogs.com/lvdabao/p/3379659.html 一.模板中可使用的东西及表达式 模板中可以使用的东西包括以下四种: 指令(directive).ng提 ...

  4. hibernate 使用 hibernate tool 生成配置文件和实体类

    安装Hibernate插件 下载所需的Hibernatetools  http://www.hibernate.org/6.html 将下载得到的文件解压得到的features和plugins文件夹, ...

  5. poj2502最短路!

    have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of getting to ride ...

  6. angular2项目添加ng2-bootstrap

    1. 先webstome创建一个空的工程.例如test File--> New -->Project --> Empty Project 2.然后命令行(Alt+F12)下执行以下命 ...

  7. Could not find a valid gem 'compass' (>= 0) in any repository compass安装失败解决方案

    安装完成ruby gem 之后,通过 gem install compass 安装compass~~ 出现如下报错 Could not find a valid gem 'compass' (> ...

  8. selenium 远程服务设置

    第一步:将浏览器的安装地址以及浏览器的驱动地址添加到系统变量path中.浏览器只需要添加此浏览器exe文件所在的目录就可以,驱动需要添加完整的地址包括驱动本身XXX.exe. 第二步:需要安装jdk环 ...

  9. [笔记]我的Linux入门之路 - 04.Eclipse安装

    首先,要安装ecliose自然是先要有Java环境.在上一篇已经安装好了,不再赘述. 一.下载 Eclipse官网 下载下来的文件":eclipse-inst-linux64.tar.gz ...

  10. 一分钟应对勒索病毒WannaCry

    一.WannaCry 勒索病毒 勒索病毒WannaCry肆虐全球,利用Windows操作系统漏洞,因链式反应迅猛自动传播,校园电脑.个人电脑.政府机关都是重灾区.中毒电脑所有文档被加密,将被勒索高达3 ...