精华内容
下载资源
问答
  • 静态初始化器

    2016-04-22 16:19:52
    1、静态初始化器是由static修饰的一对花括号“{}”括起来的语句组。它的作用和构造方法有待你相似,都是用来完成初始化工作的,但是静态初始化器与构造方法有以下几点根本不同。 a、构造方法是对每一个新创建的对象...

    1、静态初始化器是由static修饰的一对花括号“{}”括起来的语句组。它的作用和构造方法有待你相似,都是用来完成初始化工作的,但是静态初始化器与构造方法有以下几点根本不同。

      a、构造方法是对每一个新创建的对象初始化,而静态方法是对类自身进行初始化。

      b、构造方法是在new运算符创建新对象的时候由系统执行,而静态初始化器一般不能由程序调用,它是在所属类被加载入内存时由系统调用执行的。

      c、用new运算符创建多少个新的对象,构造方法就被调用那个多少次,但是静态初始化器则是在被类加载入内存时只执行一次,与创建多少个对象无关。

     

    2、如果有多个静态初始化器,则它们在类的初始化时会依次执行。

     

    3、类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中得所有可能用到的类。

     

    4、静态初始化器的作用是对整个类完成初始化操作,包括给static成员变量赋初值,它在系统向内存加载时自动完成。

     

    5、例子


    public class HelloB extends HelloA{
    
    public HelloB()
    
    {
    
     
    
    }
    
    {
    
    System.out.print("I'm B class");
    
    }
    
    static
    
    {
    
    System.out.print("Static B");
    
    }
    
    public static void main(String[] args)
    
    {
    
    new HelloB();
    
    }
    
    }
    
    class HelloA
    
    {
    
    /**
    
    * 构造方法,可以用来初始化该类的实例属性,也可以初始化类对象
    
    */
    
    public HelloA()
    
    {
    
     
    
    }
    
    /**
    
    * 初始化块,只能用于初始化该类的属性
    
    */
    
    {
    
    System.out.print("I'm A class");
    
    }
    
    /**
    
    * 静态初始化器,对整个类就完成初始化操作,包括给成员变量赋值
    
    */
    
    static   
    
    {
    
    System.out.print("Static A");
    
    }
    
     
    
    }

    展开全文
  • 静态初始化器java

    千次阅读 2019-08-03 15:21:19
    静态初始化器所在类第一次被使用时,静态初始化器首先被调用,而且仅此一次而已,以后不管这个类被使用多少次,静态初始化器都不会再被调用,静态初始化器定义形式是: static { //静态域初始化语句 } class ...

    静态初始化器
    静态域在初始化前应该进行初始化。更好的初始化静态域的方法是静态初始化器。静态初始化器也是一个方法,但是它没有方法名。当静态初始化器所在类第一次被使用时,静态初始化器首先被调用,而且仅此一次而已,以后不管这个类被使用多少次,静态初始化器都不会再被调用,静态初始化器定义形式是:
    static {
    //静态域初始化语句
    }

    class Employee {   //雇员类
     private String id;  //编号
     private String name; //姓名
     private int age;     //年龄
     private String vocation; //职务
     private static int counter;//静态成员,没有赋初值,私有域
     static {
      counter=10;
      //初始化为0,非静态域不能在静态初识化器中初始化
     }
     public Employee(){} //构造方法一
     public Employee(String id,String name,int age,String vocation){
      set(id,name,age,vocation);
     }
     //设置属性的方法
     public void set(String id,String name,int age,String vocation){
      this.id=id;
      this.name=name;
      this.age=age;
      this.vocation=vocation;
     }
     public String toString() {
      String mess=id+","+name+","+age+","+vocation;
      return mess;
     }
     public void 签到(){
      System.out.println(name+"签到");
      counter++;
      //每签到一人,计数器加一
     }
     public static int 出勤人数(){  //用于得到出勤的人数
      return counter;  
     }
    }
    public class Example15 {
     public static void main(String[] args){
      //声明对象数组并直接初始化,初始化元素直接调用构造方法创建对象
      Employee 雇员[]={new Employee("0001","张文军",50,"总经理"),
      new Employee("0005","李琦",50,"副经理"),
      new Employee("1016","张丽",50,"秘书")};
      for(Employee employee:雇员)
       employee.签到();
      System.out.print("今日出勤总人数");
      //通过类名访问静态方法
      System.out.println("今日共有"+Employee.出勤人数()+"人出勤");
     }
    }
    

    在这里插入图片描述

    展开全文
  • 静态初始化器:对类自身初始化 第二点从执行的状态 构造方法:使用new 运算符 创建新的对象 系统自动执行 静态初始化器:不能由程序调用,所属的类被加载到内存时,系统调用 第三点从执行次数 构造方法:使用new...

    总结这两种的区别:

    第一点从’对象‘出发
    构造方法:对新创建的对象进行初始化
    静态初始化器:对类自身初始化

    第二点从执行的状态
    构造方法:使用new 运算符 创建新的对象 系统自动执行
    静态初始化器:不能由程序调用,所属的类被加载到内存时,系统调用

    第三点从执行次数
    构造方法:使用new运算符创建多少个对象,就调用多少次
    静态初始化器:在该类被加载时,就执行一次。与对象无关

    最后静态初始化器不是方法,没有返回值,参数和方法名。

    展开全文
  • 静态属性、静态方法与静态初始化器  static称为静态修饰符,它可以修饰类中的属性和方法。  1.静态属性  被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的...




    静态属性、静态方法与静态初始化器
      
    static称为静态修饰符,它可以修饰类中的属性和方法。
      
    1.静态属性
      
    被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。
      静态属性节省空间;静态属性保持类对象的一致性修改
      举例:总和、基本工资等
      2.静态方法
      
    static修饰符修饰的属性是属于类的公共属性:与之相仿,用static修饰符修饰的方法,是属于整个类的类方法;而不用static至少有三重含义:
      (1)调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名;
      (2)非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己专用的代码段;而static的方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有:
      (3) 由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量。也即,static方法只能处理static的数据。
      3.静态初始化器
     
     
    静态初始化器是由关键字static引导的一对大括号括起的语句组。它的作用与类的构造函数有些相似,都用来完成初始化的工作,但是静态初始化器与构造函数有三点根本的不同:
      (1)构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进行初始化;
      (2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用运行的;
      (3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。
      让我们考虑如下的问题,所以考虑由系统自动为新雇员对象生成编号变量的值,将Employee类的属性定义改写为:
      class Employee    //定义雇员类
      {
        private int m_EmpNo; //私有属性:雇员编号
        String m_EmpName;   //雇员姓名
        char m_EmpGender;   //雇员性别
        private double m_EmpSalary;  //私有属性:雇员工资
        static double m_MinSalary;   //静态属性:最低工资
        static int m_NextEmpNo;    //下一个新雇员的编号
      }
    构造函数为:
      Employee(String name,char sex,double sal)  //构造函数,完成初始化工作
      { 
        m_EmpNo=m_NextEmpNo++;   //新雇员使用了新编号之后,再产生另一个新编号
        m_EmpName=new String(name);
        m_EmpGender=sex;
        if(sal>=m_MinSalary)   //工资额不合理时使用最低工资
          m_EmpSalary=sal;
        else
          m_EmpSalary=m_MinSalary;

    这里,为实现编号不重复地自动生成,引入一个类成员m_NextEmpNo,它的值是下一个新创建的雇员对象的编号。每当有新对象生成时,系统调用构造函数,将m_NextEmpNo的当前值赋给新雇员的编号变量m_EmpNo,然后让类静态属性m_NextEmpNo自动加一,这样新对象的编号就不会与已有对象的编号相重复。表面看来整个问题似已解决,但实际上还有很关键的一步没有完成:那就是static的类属性m_NextEmpNo的初始化问题。
       总之,静态初始化器的作用是对整个类完成初始化操作,包括给static类成员赋初值等,它在系统向内存加载时自动完成。



    展开全文
  • 静态属性、静态方法与静态初始化器  static称为静态修饰符,它可以修饰类中的属性和方法。  1.静态属性  被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的...
  • static称为静态修饰符,它可以修饰类中的属性和方法。  1.静态属性  被static修饰的属性称为静态属性,这类属性一个本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一...
  • 这三个我们也常称作:...1.在本类的main函数中实例本类对象时: /** * @Author: QianQian * @CreateDate: 2019/12/4 11:04 * 构造函数,构造代码块,静态代码块 */ public class Test { static { System.o...
  • 静态初始化器的定义(initializer)

    千次阅读 2013-04-28 14:46:34
    静态初始化器是由关键字static引导的一对大括号括起的语句组。作用是:在加载时,初始化类的静态域。如有多个static{}程序段,则在类的初始化时,会依次执行。  与构造函数相同,他们都是用来完成初始化的工作,...
  • PHP静态初始化器

    2013-12-08 10:38:55
    <p>I'd like to access a static field of a class in a static function, but the field is still <code><Uninitialized></code>.... <pre><code><... private static $lookup = array(123, 456, 789);...
  • 如果是只需要对静态成员进行空间的分配那么直接使用初始化器语法即可——在声明静态成员的时候对其进行初始化。 在声明成员变量的同时对其进行初始化(就是指在“堆”中分配内存空间),就叫做初始化器 转载于:...
  • static称为静态修饰符,它可以修饰类中的属性和方法。  1.静态属性  被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一...
  • Java类的静态初始化器(initializer)

    千次阅读 2013-04-28 14:33:48
    Java类接受一整块的静态初始化代码,这部分代码会在第一次load class的时候执行。 当类有一些静态变量,同时不能用一行代码解决初始化时,可以使用这个方法。而不是建一个initial方法,每次new的时候都调用一次,...
  • [Java] 静态初始化器

    2014-05-20 10:07:01
    以上两段代码的作用是完全相同的,那么静态初始化器有什么特别作用呢? 我猜其作用在于可允许更复杂的初始化语句,比如: public class Test { public static int i; static { if (1>0) //这条件...
  • * static{ 和 }之间的代码被称为静态初始化器。它只有在第一次加载类时运行。 * 只有静态变量才可以在静态初始化器中进行访问。 * 虽然创建了多个实例,但静态初始化器只运行一次。 * * @ClassName: ...
  • 对象的构造和初始化 对象的构造必须由构造函数完成: 当对象没有提供自定义构造函数时,系统会自动提供无参构造函数,所有无参构造函数统称默认构造函数,即自定义的无参构造函数也称为默认构造函数。如果自定义了...
  • PersonAno用了一个静态初始化器,避免了Person类中的效率低下的情况。 PersonAno类只在初始化的时候创建Calendar,TimeZone和Date实例一次,而不是在每次调用isBabyBoomer的时候都创建这些实例。 ...
  • 静态初始化块 和 非静态初始化块 在什么时候执行? 静态初始化块:当类第一次加载时执行。创建子类型的对象时,也会导致父类型的静态初始化模块的执行。 非静态初始化块(普通初始化块):非静态初始化块会在构造...
  • 2.特点:静态初始化块调用时机:加载类。只会调用一次,随类加载而加载。类只会加载一次。普通初始化块调用时机:调对象。会调用多次,随着对象的创建而加载。3.一个类中有多个普通初始化块和静态初始化块。静态的要...
  • 在Java中,有两种初始化块:静态初始化块和非静态初始化块。 它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。 非静态初始化块(构造代码块): 作用:给对象进行初始化。对象一...
  • 静态初始化块 &gt; 初始化块 &gt; 构造 父类 &gt; 子类 综合下来顺序就是: 父类静态初始化块 子类静态初始化块 父类初始化块 父类构造 子类初始化块 子类构造 需要注意静态初始化块是在类...
  • 我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造。我们也可以通过下面的测试代码来验证这一点:  Java代码 ...
  • 实例一: public class Father { public Father() { System.out.println("父类构造...static {// 静态初始化块--一般用来对创建对象之前就应该有数据进行赋值 System.out.println("父类静态初始化块1"); } static
  • 父类静态初始化块&gt;子类静态初始化块&gt;父类初始化块&gt;父类构造&gt;子类初始化块&gt;子类构造
  • Java中的静态初始化块,普通初始化块,构造的执行顺序: 首先:在一个类中执行优先级是:静态初始化块> 普通初始化块 > 构造   静态初始化块是在类被加载的时候就执行的一块程序,并且一直存在直到程序关闭...
  • 1.类的初始化阶段,先执行最顶层的父类的静态初始化块,然后依次向下执行,直到执行当前类的静态初始化块 2.对象初始化阶段,先执行最顶层父类的初始化块,最顶层父类的构造,然后依次向下,直到执行当前类的...
  •  静态类初始化器没有返回值,没有参数,其中的变量必须是static型,静态成员变量和静态初始化块级别相同。 public class Test { public static int i; static { i = 10; } } publ
  • public class Initialization_Blocks{public static void main(String[] args){ new Mid(); new Leaf(); } }class Root{ ... System.out.println(“Root 的静态初始化块”); }{ System.out

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,340
精华内容 2,136
关键字:

静态初始化器