zoukankan      html  css  js  c++  java
  • static关键字的作用

    1、static是Java语言中的一个关键字,单词本身的含义是静态的。

    2、使用static修饰的成员为静态成员,是属于某个类的;而不使用static修饰的成员为实例成员,是属于类的每个对象的。

    3、一个类的成员包括变量、方法、构造方法、代码块和内部类。static可以修饰除构造方法外的所有成员。

    1、static修饰变量:

    static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。static变量和非static变量都是成员变量。主要区别是:

    1)在内存中的份数不同

    不管有多少对象,static变量只有一份。对于每个对象,实例变量都会有单独的一份。

    2)在内存中的位置不同

    静态变量在方法区中,实例变量在堆内存中。

    3)访问的方式不同

    实例对象:对象名.变量名。

    静态变量:类名.变量名(推荐使用),也可以使用【对象名.变量名(不推荐使用)】。

    4)在内存中分配空间的时间不同

    实例变量:创建对象的时候才分配空间。

    静态变量:第一次加载类的时候。

    2、static修饰方法:

    可以通过对象名.方法名和类名.方法名两种方式来访问。

    3、static修饰代码块

    当类被第一次加载时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,并且只被执行一次,主要的作用是实现static属性的初始化。

    4、static修饰内部类

    属于整个外部类,而不是属于外部的每个对象。不能访问外部类的非静态成员(变量或方法),可以访问外部类的静态成员。

    5、静态导入

    import static java.lang.Math.*;

    非导入类和接口,而是导入类和接口的静态成员。

    注意:局部变量不可以使用static修饰

    其他:

    1)java中Math、Arrays、Collections等工具类中大量的static属性和方法,通过类名可以直接调用。

    2)Class.forName("com.mysql.jdbc.Driver");的作用是第一次加载类的时候调用该类的静态代码块,实现驱动注册。

    3)JDK1.8之后在接口中可以出现static方法,但不能是抽象方法。JDK1.7之前是不可以的。

  • 相关阅读:
    Django进阶Model篇006
    nginx 实现反向代理、负载均衡、高可用
    【springcloud】Zuul高级配置(zuul--3)
    【springcloud】Zuul高级配置(zuul--2)
    【springcloud】API Gateway 的路由和过滤(Zuul--1)
    【springcloud】服务熔断与降级(Hystrix)
    【springcloud】hystrix面试题
    时间复杂度On和空间复杂度O1是什么意思?
    2019年 Java 面试题解析
    【springcloud】模拟RPC调用(Feign)
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/12047755.html
Copyright © 2011-2022 走看看