zoukankan      html  css  js  c++  java
  • java读书笔记关于java中的static

    静态成员是一组比较特殊的成员,它不属于某个特定的类实例。它独立于该类。也就是说它不依赖类特定的实例,而被类的所有实例共享。

           类的静态成员一般可以分为3种:静态成员变量,静态方法,静态代码块。它们都具有以下几个特点:

                1、在类加载的时候,就进行创建和初始化或执行代码;

                2、它们对于一个类来说,都只有一份;

                3、类的所有实例都可以访问到它们;

         1)、静态成员变量

              按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫做静态变量;另一种是没有被static修饰的变量,叫做实例变量。两者的区别在于:

               静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配。在访问中一般都是直接通过类名来访问,不建议通过对象来访问。因为静态成员是属于类所有。静态成员变量会在类加载以后进行创建和初始化操作。

             对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。         

         2)、静态方法

               静态方法指的是用static关键字修饰的方法,他可以被对象访问,也可以直接由类名来访问。对于静态方法,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态成员变量和静态方法。因为static方法独立于任何实例,因此static方法必须要被实现,而不能是抽象的abstract。

          3)、静态代码块

              静态代码块,是采用static修饰,用大括号“{......}”围起来的代码,这些代码可以使用静态成员变量和静态方法,它们也是在类加载的时候被调用。如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。    

    public class StaticTest {
    
     static int a ;                       //静态成员变量
     static void testMethod(){            //静态方法
      System.out.println("static method.....");
     }
     
     static{                               //静态代码段
      System.out.println("static code");
     }
     public static void main(String[] args) {
      System.out.println(a);
      StaticTest sTest = new StaticTest();
      sTest.testMethod();                   //通过对象来访问静态方法
     }
    }
    
    


         执行得结果如下:

       static code
       0
       static method.....


        分析:

          在StaticTest类中,包含一个静态成员变量a,一个testMethod()静态方法以及一段静态代码块。当执行以上代码的时候,JVM会加载StaticTest类到内存中,然后创建a变量并进行初始化,再执行static代码块。在main()方法中,创建一个staticTest类的实例对象。通过该实例对象来访问静态方法testMethod()。

         对于static和final一块用表示什么
         static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
         对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
         对于方法,表示不可覆盖,并且可以通过类名直接访问。


     

             

  • 相关阅读:
    Android:res之selector背景选择器
    工作备份 build.gradle
    Android studio听云接入另外一种方式
    自由开发者_免费可商用的图片资源推荐
    Duplicate files copied in APK META-INF/LICENSE.txt
    模仿九宫格拼音输入法,根据输入的数字键,形成对应的汉字拼音
    Map转Bean小工具
    验证身份证是否合法算法
    jqzoom插件图片放大功能的一些BUG
    外层div高度不随内层div高度改变的解决办法
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752354.html
Copyright © 2011-2022 走看看