类成员(代码块)

简介: 类成员(代码块)

代码块

在Java中,使用{}括起来的代码被称为代码块(Code block),根据其位置和声明的不同,可以分为:

局部代码块。

构造代码块。

同步代码块。

静态代码块。

1.代码块(或初始化块)的作用

  • 对Java类或对象进行初始化

2.代码块(或初始化块)的分类:

  • 一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块 (static block),没有使用static修饰的,为非静态代码块。
  • static代码块通常用于初始化static的属性
class Person {
public static int total;
static {
total = 100;//为total赋初值
}
…… //其它属性或方法声明
}
  • 静态代码块:用static 修饰的代码块
  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
  4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
  5. 静态代码块的执行要先于非静态代码块。
  6. 静态代码块随着类的加载而加载,且只执行一次
  • 非静态代码块:没有static修饰的代码块
  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 除了调用非静态的结构外,还可以调用静态的变量或方法。
  4. 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
  5. 每次创建对象的时候,都会执行一次。且先于构造器执行。

静态初始化块举例:

class Person {
public static int total;
static {
total = 100;
System.out.println("in static block!");
}
}
public class PersonTest {
public static void main(String[] args) {
System.out.println("total = " + Person.total);
System.out.println("total = " + Person.total);
  }
}
输出:
in static block
total=100
total=100

由上述例子可得出结论

总结:程序中成员变量赋值的执行顺序

1.声明成员变量的默认初始化

2.显式初始化、多个初始化块依次被执行(同级别下按先后顺序执行)

3.构造器再对成员进行初始化操作

4.通过”对象.属性”或”对象.方法”的方式,可多次给属性赋值

相关文章
|
IDE Go 开发工具
Sublime Text3搭建go运行环境
Sublime Text3搭建go运行环境
345 1
|
8月前
|
消息中间件 运维 Serverless
快速体验云消息队列 RocketMQ 版 Serverless 系列
欢迎报名参加RocketMQ Serverless活动!稳定可靠,无需运维,按量计费,秒级万QPS弹性,平均节省成本30%。参与即有机会赢取保温杯或木质音箱(限量500个)。活动时间:即日起至2025年1月26日16:00。访问活动页面,完成场景体验并上传消息轨迹截图即可参与抽奖,先到先得!
|
分布式计算 安全 大数据
HAS插件式Kerberos认证框架:构建安全可靠的大数据生态系统
在教育和科研领域,研究人员需要共享大量数据以促进合作。HAS框架可以提供一个安全的数据共享平台,确保数据的安全性和合规性。
|
Ubuntu 开发工具 git
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
377 0
无法将参数1从“const char [6]”转换为“char *”的解决方法
无法将参数1从“const char [6]”转换为“char *”的解决方法
|
C#
C# 当前上下文中不存在InitializeComponent()
C#——当前上下文中不存在InitializeComponent()可能原因是:项目文件直接由外部加载进来时可能出现错误。可以先检查xaml文件的开头x:Class=“day27test02.MainWindow”是否是正确的类名。如果不是,改成对应的项目的类即可。这是本人碰到的这种情况通过这种方式得到解决的,仅供参考。
938 1
C# 当前上下文中不存在InitializeComponent()
|
人工智能 算法 C++
c++算法学习笔记 (11) 离散化
c++算法学习笔记 (11) 离散化
|
XML Android开发 数据格式
Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)
Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)
531 0
Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)
|
XML JSON Java
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
607 0
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
|
JavaScript 安全 Java
深入Netty逻辑架构,从Reactor线程模型开始(一)
深入Netty逻辑架构,从Reactor线程模型开始(一)
653 0
深入Netty逻辑架构,从Reactor线程模型开始(一)