精华内容
下载资源
问答
  • 普通代码块
    2022-03-09 17:09:06

    1. 格式不同,静态代码块 static {},普通代码块{};

    2. 静态代码,在虚拟机加载类的时候就会加载执行,而且只执行一次;非静态代码,在创建对象的时候(即new 一个对象的时候)执行,每次创建对象都会执行一次。

    3. 执行顺序,静态代码块 -> 非静态代码块 -> 构造方法。

    更多相关内容
  • 下面小编就为大家带来一篇Java 普通代码块静态代码块执行顺序(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了Java 中普通代码块,构造代码块,静态代码块区别及代码示例的相关资料,需要的朋友可以参考下
  • 主要介绍了Java中普通代码块、构造代码块与静态代码块的相关资料,静态代码块>Main()>构造代码块。非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 普通代码块

    2019-05-04 17:14:03
    普通代码块 格式: { 代码 } 作用及性质: 普通代码块的作用是统一初始化对象,当对象中有一类对象有统一的事情时,就可以将这些统一的事情写到代码块中。 //不使用代码块 public class Demo1 { private ...

    普通代码块

    • 格式:
    {
           代码
    }
    
    • 作用及性质:
      普通代码块的作用是统一初始化对象,当对象中有一类对象有统一的事情时,就可以将这些统一的事情写到代码块中。
    //不使用代码块
    public class Demo1 {
        private String name;
    
        public Demo1(String name) {
            this.name = name;
        }
        
        public Demo1() {
        }
    	//重写toString方法
        @Override
        public String toString() {
            return "Demo1{" +
                    "name='" + name + '\'' +
                    '}';
        }
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    
        //未使用普通代码块
        public class Test {
        public static void main(String[] args) {
    
            Demo1 demo1 = new Demo1();
            Demo1 demo2 = new Demo1();
            Demo1 demo3 = new Demo1();
            System.out.println(demo1.getName());
            System.out.println(demo2.getName());
            System.out.println(demo3.getName());
        }
    }
    
    

    执行结果:
    如果
    每一个对象都需要赋值,如果不赋值则默认为null.

    //使用代码块
    public class Demo1 {
        private String name;
    
        public Demo1(String name) {
            this.name = name;
        }
        
        public Demo1() {
        }
    	//重写toString方法
        @Override
        public String toString() {
            return "Demo1{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
        //普通代码块,统一初始化对象
        {
            this.name=("dog");
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    public class Test {
        public static void main(String[] args) {
    
            Demo1 demo1 = new Demo1();
            Demo1 demo2 = new Demo1();
            Demo1 demo3 = new Demo1();
            System.out.println(demo1.getName());
            System.out.println(demo2.getName());
            System.out.println(demo3.getName());
        }
    }
    

    不需要给对象分别赋值,在代码块中统一赋值
    不需要给对象分别赋值,在代码块中统一赋值。

    • 普通代码块先于构造方法执行:
      在普通代码块中添加代码:
        {
            this.name=("dog");
            System.out.println("普通代码块");//添加代码
        }
    

    在构造方法中添加代码:

        public Demo1() {
            System.out.println("构造方法");
        }
    

    在这里插入图片描述
    所以普通代码块先于构造方法执行。

    展开全文
  • Java中普通代码块和static代码块的区别。

    在类中用{}包起来,但是没有用static标识的就是普通代码块,比如:

    public class Test{
        {
            System.out.println("I am ordinary code block!");
        }
    }

    用static标识的代码块就是静态代码块,比如:

    public class Test{
        static {
            System.out.println("I am static code block!");
        }
    }

    再讲解它俩的区别时,我们先看个例子:

    public class Test{
        {
            System.out.println("I am ordinary code block!");
        }
        static {
            System.out.println("I am static code block!");
        }
        public static void main(String[] args) {
        }
    }

    这个例子会打印出什么东西呢?
    答案是:

    I am static block!

    我们修改一下main方法:

        public static void main(String[] args) {
            Test s = new Test();
        }

    再看执行结果:

    I am static code block!
    I am ordinary code block!

    普通代码块执行了,并且在static(静态)代码块执行之后执行,虽然static代码块在普通代码块之后,可以看出,static是在类加载时执行,并且只执行一次,而普通代码块是在类初始化时执行,当然也只是执行一次。
    那么是不是static代码块都会执行呢?
    并不是,这个就看类加载机制是否加载到这个类,比如我们虽然定义了一个类,我们的代码执行期间从来没有用过这个类的信息,即使我们用了类的静态变量,也不会触发static(静态代码块)的执行。
    举个例子:
    Base类:

    public class Base {
       static {
          System.out.println("super class init!");
       }
       public static final int VALUE =100;
    }

    main方法所在的类:

    public class Main {
        public static void main(String[] args) {
            System.out.println(Base.VALUE);
        }
    }

    打印结果:

    100

    有人会问,我们的main方法不是有Base.value这段代码么,这样Base类就被加载了么?
    实际上不是这样的,JVM为了执行效率高,会把静态变量直接插入代码执行代码中,而不会真正通过静态变量所在的类进行查找,这样,减少查找的过程,大大提高了代码的执行效率,感兴趣的可以看下JVM的内存模型。
    总结一下:
    1. 静态(static)代码块是在类加载阶段执行。
    2. 普通代码块只有在类第一次被初始化时才执行。
    3. 所以静态(static)代码块肯定是在普通代码块执行之前执行。
    4. 某些条件静态(static)代码不一定会执行,只有当静态(static)代码块所在的类被加载时,才执行。

    展开全文
  • 静态代码块、静态方法、静态变量、普通代码块、构造方法的执行顺序。 定义一个父类Test public class Test { static int age = 10; // 静态变量age static { System.out.println("Test静态代码块"); } { ...

    定义一个父类Test

    public class Test {
        static int age = 10; // 静态变量age
    
        static {
            System.out.println("Test静态代码块");
        }
    
        {
            System.out.println("Test普通代码块");
        }
    
        public static void exam() {
            System.out.println("Test静态方法");
        }
    
        public Test() {
            System.out.println("Test无参构造方法");
        }
    }
    

    定义一个子类Demo

    public class Demo extends Test {
        static {
            System.out.println("Demo静态代码块");
        }
    
        {
            System.out.println("Demo普通代码块");
        }
    
        public Demo() {  
            System.out.println("Demo无参构造");
        }
    
        public static void main(String[] args) {
            Test.exam();
            new Demo();
            System.out.println(Test.age);
        }
    }
    

    首先当类加载的时候,会自动加载静态代码块,静态的都是和类一起加载的。并且静态变量和静态方法是根据调用顺序来执行的。

    当我们运行Demo类时,结果会是什么呢?
    首先当虚拟机加载Demo类时,他会自动加载静态代码块,因为Demo继承了Test类,它会先去找Test类当中有没有静态代码块,如果有,则按顺序运行父类中的静态代码块。如果执行完或没有,则运行当前类的静态方法。故会依次输出 Test静态方法–>Demo静态方法两个结果。然后执行new Demo(); 在执行子类的实例化之前,虚拟机又会去父类找普通代码块,如果有则执行,没有则会去调用父类的构造方法。随后去调用子类的普通代码块,然后才去执行子类的构造方法。所以会依次输出:Test普通代码块–>Test无参构造方法–>Demo普通代码块–>Demo无参构造.。随后执行**System.out.println(“Test.age”);**语句,输出10。故程序的输出结果如下图所示:
    在这里插入图片描述

    总结

    当加载Demo类时,JVM会去调用该类父类的静态代码块,父类的静态代码块运行完后去执行子类的静态代码块。当子类的静态代码块执行完毕后JVM又会去找父类中的普通代码块,当父类的普通代码块执行完毕后又会调用父类的构造方法。父类的构造方法执行完毕后,JVM又会去看子类中有没有普通代码块,如果有则执行。执行完毕后,会去调用子类的构造方法。这就是他们之间的顺序。
    注意:java中所有类都是Object类的子类。当父类中含有有参构造而没有显示的写出无参构造,则子类必须用super关键字显示的调用父类的有参构造,否则编译将不通过。

    展开全文
  • 普通代码块简单的给大家分析一下,当jvm加载类的时候是将类文件中的内容一行一行的加载到内存中的(除了实例变量,因为这是对象私有的),但不执行任何语句,即使加载时有输出语句也不会输出。加载的时候把静态成员...
  • java中关于子类和父类的构造函数,静态代码块,普通代码块,静态成员变量和普通成员变量的初始化顺序 //父类: class parent{  public static String i="我是父类的静态成员变量";  public String j=&...
  • 在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。 回到顶部 1、静态代码块  ①、格式  在java类中(方法中不能...
  • 首先 ,类中包含 普通初始化, 静态初始化, 构造函数 静态初始化只调用一次(类加载时),而普通初始化可以调用多次,随着对象的创建而加载 顺序为 静态初始化 => 普通初始化 => 构造函数 静态初始...
  • public class Test { static int age=1; int age1=2; ...System.out.println("这是静态代码块...System.out.println("这是普通代码块"+age1); } public Test(){ System.out.println("这是构造方法"); } public s
  • 2. 普通代码块在没创建一个实例时执行 3. 普通代码块在构造器的super()执行后就会执行(其中super()是构造器中默认的第一句,写与不写该super()都一样) 看以下实例: public class Init { Init(int x) { ...
  • Java 代码块详解

    千次阅读 多人点赞 2022-02-26 10:41:21
    下午了,一起喝杯Java吧,了解代码块和类加载中代码的执行顺序。
  • 代码块是什么?该如何使用?

    千次阅读 多人点赞 2022-01-23 17:43:25
    代码块又叫初始化块,属于类中的成员,即使类的一部分 类似于方法,将逻辑语句封装在方法提中,通过{ }包围起来。但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显示调用,而是...
  • 成员变量、普通代码块 --> 构造方法 父子类初始化顺序 父类静态变量、静态代码块 --> 子类静态变量、静态代码块 --> 父类成员变量、普通代码块 --> 父类构造方法 --> 子类成员变量、普通代码块--&...
  • 前言: java成员变量和构造方法等加载顺序是一...废话不多说上代码   public class Father { public Father(){ System.out.println("加载父类构造函数"); } public static String fatherStaic...
  • 今天有个同事问我关于代码块的问题 只记得静态代码块要提前执行 怕说错,查了资料,实测的一下,供大家参考 public class book { { System.out.println("这里是构造代码块");//所有类中有一个默认的构造函数,...
  • 内容大纲 一、静态代码块 ①、格式 ...在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock { static{ System.out.println("静态代码块");...
  • Java中代码块的执行

    千次阅读 2022-01-29 10:41:23
    代码块的格式: {执行的语句} 代码块的主要用途 当我们定义了代码块之后,我们每一次调用构造器,代码块的语句都会被执行一次。我们可以看出代码块在构造器的第一列就被调用执行了。如果有多个代码块则会按照顺序...
  • 文章目录声明构造方法普通代码块静态代码块构造代码块构造方法、静态代码块、构造代码块的执行顺序 声明 1)该文章部分内容整理自网上的资料,如不小心侵犯了大家的权益,还望海涵,并联系博主删除。 2)博主是萌新...
  • 首先我们需要先知道类什么时候会被加载静态代码块 也加static代码块 不存在于任何方法体实例说明: 打印结果 普通代码块实例: 结果 如果有父子关系 执行顺序是
  • Java中普通代码块,构造代码块,静态代码块区别及代码示例 //执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。...//普通代码块:在方法或语句中出现的{}就称为普通代码块
  • //示例代码: public class HelloB extends HelloA{ public HelloB(){ System.out.println(... System.out.println("子类构造代码块"); } static{ System.out.println("子类静态块"); } public st
  • Java中的代码块

    千次阅读 2022-05-12 14:07:22
    初识代码块
  • 除了说普通代码块,静态代码块,构造代码块的执行顺序外,还有静态方法,静态变量等,都放在一起的话,这个执行顺序,怎么确定。 我就实际弄个代码,看下执行顺序。 public class Line { static { System.out....
  • 在Java中存在代码块这一结构这一结构又主要分为普通代码块和初始化代码块两类。 一、普通代码块 普通代码块仅出现于方法中,起到分隔不同功能代码的作用,其运行顺序依据代码块出现的先后。 public static void main...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 420,861
精华内容 168,344
关键字:

普通代码块