【Java基础】Java中的代码块

什么是代码块

  在Java中,用{}括起来的代码称之为代码块。

代码块分类

  1. 局部代码块:在局部变量位置且用{}括起来的代码,用于限制局部变量的生命周期。
  2. 构造代码块:在类中的成员变量位置并用{}括起来的代码,和构造方法处于同一个层级,且每次调用构造方法前会调用一次,故称之为构造代码块。
  3. 静态代码块:在类中的成员变量位置并用{}括起来的代码,但是{}前需要加一个static关键字

有何区别

  1. 局部代码块用在局部位置,用于限定生命周期。
  2. 构造代码块出现的目的是可以将多个构造方法中相同的代码放在一起,每次实例化对象前调用一次,多个对象有多次出现。
  3. 静态代码块是对类初始化时出现,多个对象共享一个。
  4. 代码块无法明确调用

示例代码

/**
 * Created by lili on 15/10/17.
 */

class CodeArea{
    //静态代码块
    static {
        int y = 100;
        System.out.println(y);
    }

    //构造代码块
    {
        int x = 10;
        System.out.println(x);
    }

    public CodeArea() {
        System.out.println("------construct function 1-------");
    }

    //构造代码块,不一定要出现在构造方法前面,可以在同一层级任何位置,但是调用的时候在构造方法之前.
    {
        int x = 20;
        System.out.println(x);
    }

    public CodeArea(int m) {
        System.out.println("------construct function 2-------");
    }

    {
        int x = 30;
        System.out.println(x);
    }

    //静态构造方法不论出现多少次,位置如果,都是在构造代码块和构造方法之前调用.
    static {
        int y = 200;
        System.out.println(y);
    }

    {
        int x = 40;
        System.out.println(x);
    }
}
public class CodeAreaTest {
    public static void main(String args[]) {
        {
            int x = 1;
            System.out.println(x);
        }
        System.out.println("--------split 1----------");

        CodeArea codeArea0 = new CodeArea();

        CodeArea codeArea1 = new CodeArea(1);

    }
}

运行结果

1
--------split 1----------
100
200
10
20
30
40
------construct function 1-------
10
20
30
40
------construct function 2-------

Process finished with exit code 0
时间: 2024-10-06 16:14:04

【Java基础】Java中的代码块的相关文章

Java和Android中,代码块、static静态代码块的执行顺序

Java和Android中,代码块.static静态代码块的执行顺序有没有什么区别呢. Java 先来个简单的例子 Main.java: public class Main { static int a = 1; static { System.out.println(a); } static { a = 2; } public static void main(String[] args) { System.out.println("Hello World!"); System.ou

Java基础(9) - 静态、代码块

关键字加载顺序 .类初始化 .方法区.进程 存在作用:变量 -> 全局共享 (跨线程,但不支持跨进程)方法 -> 不用类实例就能直接使用,避免New的消耗.(为什么静态方法不能访问非静态变量)代码块 -> 静态块在类初始化就运行 ,初始化顺序 静态代码块 -> 普通代码块 -> 构造方法 -> 普通方法,代码块只会初始化一次导包 -> 静态导包,将类的方法直接导入到当前类中,从而直接使用"方法名"即可调用类方法,更加方便. 类加载:? 静态属性

java基础复习一、代码块执行顺序

1 /** 2 * 代码块执行顺序的测试 3 * 执行顺序 静态代码块>main代码块>构造代码块>构造函数>普通代码块 4 * @author Administrator 5 * 6 */ 7 public class ClassDemo01 { 8 static { 9 System.out.println("这是一个静态代码块"); 10 } 11 { 12 System.out.println("这是一个构造代码块"); 13 } 1

java中静态代码块的用法 static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是

java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数

一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构 Cat继承Animal Runner里包含main函数,程序入口 Sing类主要用来打印执行顺序的序列号 二.代码 public class Animal { Sing s1=new Sing(1,"animal\tnot static field"); static Sing s2=new Sing(2,&q

Java中动态代码块,构造代码块,静态代码块之间的执行顺序

Java中动态代码块,构造代码块,静态代码块之间的执行顺序 /** * Java中动态代码块,构造代码块,静态代码块之间的执行顺序 * @author Administrator * */ class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("st

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所

java基础---->java中正则表达式二

跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下: Pattern pattern = Pattern.compile("^[^abc]h$"); Matcher matcher = pattern.matcher("hh"); boolean isMatch = matcher.matches(); 另外一种不能复

Java学习笔记四(代码块 )

1 代码块的分类:java中的代码块是指使用{}括起来的一段代码,根据位置不同可以分为四种: 普通代码块 构造快 静态代码块 同步代码块 今天主要学习前三种代码块,同步代码块在学习到多线程部分的时候再加学习. 2 普通代码块:直接定义在方法中的代码块,如下: public class CodeSpace { public static void main(String args[]){ { int x = 30; System.out.println("普通代码块x="+x); } /

Java基础学习中一些词语和语句的使用

在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看break和continue使用和运行效果的额说明: break:关键字,可以用于任何循环体控制结构,在循环体内执行时,当执行到break时循环会立即终止,并跳到此循环体以后的语句执行. 列如:输出0--10的数当输出到第六位时就不在继续输出了,即是跳出for循环执行for循环体以后的一句. public