首页 > 编程语言 >JAVA字段的初始化规律

JAVA字段的初始化规律

时间:2022-10-09 19:45:29浏览次数:62  
标签:初始化 JAVA grams int class 字段 static Foo public

1.类的构造方法

(1)“构造方法”,也称为“构造函数”,当创建一个对象时,它的构造方法会被自动调用。构造方法与类名相同,没有返回值。

(2)如果类没有定义构造函数,Java编译器在编译时会自动给它提供一个没有参数的“默认构造方法”。如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

例如:

public class Test{

  public static void main(String[] args){

    Foo obj1=new Foo();          //Foo obj1=new Foo(2);

  }

}

class Foo{

  int value;                       //static int value;

  public Foo(int initValue){

    value=initValue;

  }

}

该程序是无法运行的,修改成后面语句将可以运行。

(3)同一个类可以有多个构造函数,多个构造函数之间通过参数来区分.这是方法重载的一个实例。

构造函数之间可以相互调用。

例如:

public class Test{

  public static void main(String[] args){

    Foo obj1=new Foo();

    System.out.println(Foo.grams);

    Foo obj2=new Foo(5);

    System.out.println(Foo.grams);

  }

}

class Foo {

  static int grams;

  Foo() {

    this(55);

  }

  Foo(int g){

    grams=g;

  }

}

程序的运行结果为:

55

5

 

2.类的初始化块

(1)可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员。

类的这种“没有名字”的“成员”,多用于初始化类的字段。

public class Test {

  public int value=200;

  {

    value=100;

  }

}

3.

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

执行类的构造函数

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

例如:

public class Test{

  public static void main(String[] args){

    Foo obj1=new Foo();

    System.out.println(Foo.grams);

    obj1=new Foo(5);

    System.out.println(Foo.grams);

  }

}

class Foo {

  {

    grams=100;

  } public static int grams=50;

 

  public Foo(int g){

    grams=g;

  }

  public Foo() {}

}

结果为:

100

5

但当public static int grams=50;语句在 {grams=100;}之前时结果则为:

50

5

4.继承关系中的初始化

例如:

class B

{

  public static int data=100;

  static

  {System.out.println("B初始化 data="+data);} 

}

class A extends B

{

  public static int data=50;

  static

  {System.out.println("A初始化 data="+data);}

}

public class Test

{

  public static void main(String[] args) 

  {

    new A();

  }

}

运行结果为:

B初始化 data=100

A初始化 data=50

标签:初始化,JAVA,grams,int,class,字段,static,Foo,public
From: https://www.cnblogs.com/renliqin/p/16773397.html

相关文章

  • 用一份JAVA工程师的求职简历来说说求职简历怎么写
    这是一篇我比较想看到的简历指导的文章。但是我比较反对简历造假。我觉得会什么写什么把。可以先看看我的这篇文章:刚实习结束,就要做面试官,谈谈我的想法自己做过面试官以后,自......
  • Java基本语法 for循环
    for循环虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。for循环执行的次数是在执行前就确定......
  • 【Java高级】程序、进程和线程
    1.程序一段静态的代码(未启动的APP),可以完成特定任务。2.进程正在运行的程序(挂在后台的APP),系统给进程分配了内存。3.线程程序内部的一条执行路径(比如QQ中执行聊天功能,发......
  • 基于SSM+Vue校园勤工助学网站Java大学生勤工俭学管理系统(源码调试+讲解+文档)
    ......
  • 【Java高级】并行与并发
    1.单核与多核CPU(1)单核:一个人(2)多核:多个人人与人之间有力量的大小区分,核心也可分为大核、小核。多个人一起搬砖需要指挥配合->对多核的优化。2.串行排队一个一个来......
  • java反射——设计框架的灵魂
    目录​​一、什么是反射(机制)​​​​二、反射的好处​​​​三、获取Class类对象的方式​​​​四、Class类的实例化对象具有的功能​​​​反射的应用​​​​1、写一个"框......
  • Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/
    在一些linux环境中,尤其是server版中如果工程中使用了图片生成功能,在tomcat启动过程可能会出现如下错误Causedby:java.lang.UnsatisfiedLinkError:/root/jdk1.7.0_45/jre......
  • java---一个类调用另一个类的属性或方法
    在一个类里面调用另一个类得方法,可以在这个类里面new一个要调用的那个类的对象,从而调用另一个类的方法,也可以用另一个类的对象作为形参 //在一个类里面访问另一个类的属......
  • 使用Java调用RestFul接口的几种方法
    使用Java调用RestFul接口的几种方法 1.HttpURLConnectionpublicStringpostRequest(Stringurl,Stringparam){StringBufferresult=newStringBuffer();......
  • Java入门,如何高效学习
      对于当下要想入行学习Java,那就一定是个不错的选择,因为这个行业是个你只要努力就能看到成果的行业,而且就从近两年来看,当前的程序员依旧是这个时代的高薪职业,且想要入这......