在java开发中想过大家都有初始化成员变量,很简单,可是真正系统理解里面真正的过程是在今天,想想惭愧;让自己记得清楚点还是记录起来吧
1,在方法和类中成员变量初始化区别
例如:
void f(){
int i;
int j = i++;//报错
}
class c{
int i;//在这里进行基本数据的初始化
int j = i++;//没问题,会按照基本数据的原始值进行初始化(对象类型null)
}
2,指定初始化
class c {
int i=0;
double j = 0.0;
boolean k = f(i);
}
这样每一个对象都有相同值的成员变量。我们可以像k这个变量值通过函数进行赋值。
3,构造器的初始化
使用构造器的初始化可以给你的编程带来很大的方便,但是你永远不可能屏蔽编译器自动初始化的进行,它将在构造方法初始化前执行。
4,静态数据初始化
静态数据的初始化和先前提到的没有什么不同,值得注意的就是静态数据在类加载的时候初始化一次
class Bowl{
Bowl(int i){
System.out.println(i+"");
}
}
class Table{
static Bowl b1 = new Bowl(1);
Table(){
System.out.println("Table");
}
static Bowl b2 = new Bowl(2);
}
//在main方法中
Table t1 = new Table();
Table t2 = new Table();
//输出结果
1
2
Table
Table
总结对象的创建过程假设有个名为Dog的类
<1>,首次创建Dog对象,或者调用类中静态方法、静态域,java解析器查找类路径定位Dog.class
<2>,然后载入Dog.class有关静态初始化的动作执行(静态初始化只在类加载时候进行一次)
<3>,当你用new Dog的时候在堆上为Dog分配足够的存储空间
<4>,这块存储空间进行清0,类中的成员变量设置成了默认的值,应用设置成了null
<5>,执行所有域定义中的初始化动作
<6>,进行构造方法初始化
5,使用静态块进行初始化
类对象进行创建或者调用静态变量的时候初始化且只执行一次。
分享到:
相关推荐
本文将详细探讨Java成员初始化的两种不同情况,以及与之相关的基础知识。 首先,我们来看第一种情况:类内的变量初始化。当声明一个类的成员变量(即实例变量)时,即使你没有显式地为它们赋值,Java编译器会自动为...
Java 数组初始化详解 Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明...
在Java编程语言中,初始化块是程序执行时用于初始化对象或类的重要机制。这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种...
Java 变量初始化详解 Java 变量初始化是 Java 语言的基础知识点之一,但也往往被学习者所忽略。 Java 变量初始化的时机是指在 Java 语言中变量的初始化过程,包括变量的声明、初始化和赋值的步骤。 Java 变量声明 ...
总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...
详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序
这是Java语言规范所规定的,确保在子类访问父类的静态或非静态成员时,父类的初始化已经完成。 在实际开发中,理解这个初始化顺序是非常重要的,尤其是在设计复杂的类结构或者涉及单例模式、线程安全初始化等场景时...
当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...
### Java中类的初始化顺序详解 #### 一、概述 在Java编程语言中,类的初始化是一个非常重要的概念。类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文...
本文将深入探讨Java中的初始化过程,包括对象的构造器初始化以及类成员的初始化顺序,同时也会涉及Java的垃圾回收机制,即内存的自动清理。 首先,让我们详细了解一下Java中的构造器初始化。构造器是Java中用于初始...
静态初始化块不能访问非静态成员,包括实例属性和实例方法,因为它们依赖于对象实例,而静态初始化块在类加载时并没有对象存在。 类的初始化顺序如下: - 当Java创建一个对象时,先为对象的所有属性分配内存。 - ...
默认初始化是指数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。例如,`int[] s; s = new int[5];`创建了一个名为`s`的整型数组,数组长度为5。然后...
##### 步骤一:成员初始化顺序 成员变量的初始化顺序遵循以下规则: 1. **实例变量的初始化**:按照它们在类中出现的顺序进行初始化。 2. **构造函数中的初始化**:在构造函数内部,可以显式初始化成员变量,这...
在Java编程语言中,初始化数据域(字段或成员变量)是程序设计的重要组成部分。它确保在对象被创建或类被加载时,变量拥有一个合理的初始值。本篇文章将详细探讨四种常见的初始化数据域的方法,结合给出的代码示例...
根据不同的初始化方式,Java 提供了三种主要的数组初始化方法:动态初始化、静态初始化以及隐式初始化。 #### 二、动态初始化 动态初始化是在创建数组时由系统自动为数组中的元素赋以默认值。默认值取决于元素的...
### Java中对象创建、初始化与引用详解 #### 一、Java对象、引用及创建过程 在Java中,对象是程序的基本单位,它包含了属性(成员变量)和行为(方法)。对象是由类创建出来的实例,而类则是一组具有相同属性和...
Java类成员初始化顺序详解 Java类成员初始化顺序是Java编程中一个非常重要的概念,它直接关系到Java类的实例化和成员变量的初始化顺序。下面我们将通过详细的示例代码来介绍Java类成员初始化顺序。 首先,Java类中...
Java 初始化顺序详解 在 Java 中,变量可以分为两类:类变量(静态变量)和实例变量(对象变量)。类变量是使用 static 关键字修饰的变量,它们属于类,而不是对象。实例变量则是没有使用 static 关键字修饰的变量...
初始化阶段的目标是确保类的静态成员被正确地初始化。有两种主要的方式进行类的初始化: 1. **静态变量的声明处赋值**:这是最直接的方式,如`public static int a = 0;`,变量`a`在声明时就被赋予了初始值0。 2. ...