JAVA类的成员基础解读:代码块
2020-07-12 22:35
113 查看
代码块
一、基本概念
1.作用
作用: 对Java类或对象进行初始化。
2.分类:2类
- 静态代码块:一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块(static block)
static代码块通常用于初始化static的属性 - 一个类中代码块若有修饰符,且没有使用static修饰的,称为非静态代码块
二、静态代码块
1.定义
静态代码块:用static修饰的代码块
2.特点
- 内部可以有输出语句。
- 初始化类的信息(属性、方法)。
- 只能调用静态的属性、静态的方法,不能调用非静态的结构。即不可以对非静态的属性初始化。
- 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
- 静态代码块的执行要先于非静态代码块。
- 静态代码块随着类的加载而加载执行,且只执行一次。
三、菲静态代码块
1.定义
非静态代码块:没有static修饰的代码块
2.特点
- 内部可以有输出语句。
- 可以对类的属性、类的声明进行初始化操作。
- 除了调用非静态的结构外,还可以调用静态的变量或方法。
- 若有多个非静态的代码块,则按照声明的先后顺序执行。
- 每次创建对象的时候,都会执行一次(随着对象的创建而执行)。
可以在创建对象时,对对象的属性等进行初始化且先于构造器执行。
代码展示。
class BlockTest { public static void main(String[] args) { String desc = PersonCD.desc; System.out.println(desc); PersonCD p1 = new PersonCD(); PersonCD p2 = new PersonCD(); System.out.println(p1.age); PersonCD.info(); } } class PersonCD{ //属性 String name; int age; static String desc = "我是一个人"; //构造器 public PersonCD(){ } public PersonCD(String name,int age){ this.name = name; this.age = age; } //非static的代码块 { System.out.println("hello, block - 2"); } { System.out.println("hello, block - 1"); //调用非静态结构 age = 1; eat(); //调用静态结构 desc = "我是一个爱学习的人1"; info(); } //static的代码块 static{ System.out.println("hello,static block-2"); } static{ System.out.println("hello,static block-1"); //调用静态结构 desc = "我是一个爱学习的人"; info(); //不可以调用非静态结构 // eat(); // name = "Tom"; } //方法 public void eat(){ System.out.println("吃饭"); } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } public static void info(){ System.out.println("我是一个快乐的人!"); } }
相关文章推荐
- java类的成员基础解读:内部类
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- Java基础:04面向对象——类的成员(属性,方法,构造器,代码块,内部类)
- 黑马程序员——JAVA基础_01(类和对象的关系、成员变量和局部变量、构造函数、构造代码块)
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- Java基础四(构造方法、重载、静态变量与成员变量、代码块)
- Java基础四: 反射(构造方法,成员变量,普通方法,数组)
- 第3章 Java语言基础----声明成员变量,对变量进行赋值
- Java基础:第三十六讲 成员变量的继承与覆盖
- Java基础类型源代码解读
- java基础-成员变量与局部变量的联系与区别
- I学霸官方免费教程九:Java基础之成员变量(全局变量)和局部变量
- Java 基础一些代码练习笔记(static 静态代码块)
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 黑马程序员Java基础加强成员方法的反射
- java静态成员静态代码块初始化顺序
- Java基础笔记 – 内部类 静态内部类 成员内部类 局部内部类 匿名内部类anonymous inner classes
- 黑马程序员---2015.6.13java基础笔记---构造代码块--this--static函数
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
- Java基础(六)深入解读泛型(1)