`
kaka2008
  • 浏览: 93028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初始化

    博客分类:
  • java
阅读更多
java初始化
1、 一个类的所有基本类型数据成员都会保证获得一个初始值。
非基本类型,会初始化为null

   public class Initialization {
	int a;
	char b;
	short s;
	float f;
	long lo;
	double dou;
	byte e;
	boolean flag;
        Object obj;
	
	public static void main(String [] args){
		Initialization init = new Initialization();
		init.print();
	}
	
	public void print(){
		System.out.println("int a="+a+"\nchar b="+b+" \n"+" short s="+s+"\n float f="+f+"\n long lo="+lo+"\n double dou="+dou+"\n byte e="+e+"\n boolean flag="+flag+"\n Object obj="+obj);
	}
}

出来结果为
   int a=0
   char b=
   short s=0
   float f=0.0
   long lo=0
   double dou=0.0
   byte e=0
   boolean flag=false
   Object obj=null

可见,java会为类的基本类型的变量提供一个初始值,各类型初始值不同,非基本类型初始为null。注意,这里的变量必须是类变量,注意,只会为类变量提供初始化,而局部变量不会。如果局部变量没有初始化,会收到一个出错信息

2、可以通过构造方法或其他方法进行初始化,但是不会妨碍java默认的初始化
   构造方法初始化不用赘述。
   用方法进行初始化值得一提的是下面这种情况
 
    public int init(int j){
	return j;
    }
	
    int a = init(b);
    int b = 0;
  

  这样就会提示错误。

  这时需要修改b和a的定义顺序

  通过构造方法或方法都可以进行初始化,但是不会妨碍java默认的初始化。
  看下面的例子
 
        int i;
        Object obj;
	public Initialization(){
		System.out.println("before i="+i+"  obj="+obj);
		i = 1;
		obj = new Object();
		System.out.println("after i="+i+" obj="+obj);
	}
	
	public static void main(String [] args){
		Initialization init = new Initialization();
	}
  

  输出结果为
 
     before i=0  obj=null
     after i=1 obj=java.lang.Object@de6ced
  

由此可见,不论是基本类型,还是其他的类。java默认的初始化是最先发生的,位于一切方法之前。
3、static 数据的初始化
  static 数据会发生上述同样的事情(基本类型,获得对应基本类型的初始化值;非基本类型,初始化为null)
  但是,由于static值只有一个存储区域,所以static值只会被初始化一次,看下面的例子
 
     public static void main(String [] args){
	Cupboard cup = new Cupboard();
	cup = new Cupboard();
     }
    
     public class Cupboard {
	static Bowl bowl = new Bowl();
	
	public Cupboard(){
		System.out.println("initialization Cupboard");
	}
     }
     public class Bowl {
	public Bowl(){
		System.out.println("init ing Bowl~");
	}
     }
  

  输出结果如下
 
     init ing Bowl~
     initialization Cupboard
     initialization Cupboard
  

所以说,static数据只会在第一次进行初始化,之后就不会了。

4、初始化顺序
  在一个类中,无论变量的定义是在方法之前还是方法之后,都会在方法之前进行初始化的;
  另外,static数据初始化位于非static数据初始化之前
来看下边的例子
 
   public static void main(String [] args){
	Cupboard cup = new Cupboard();
	
   }
   public class Cupboard {
	Pan pan = new Pan();
	public Cupboard(){
		System.out.println("initialization Cupboard");
	}
	static Bowl bowl = new Bowl();
   }
   public class Bowl {
	public Bowl(){
		System.out.println("init ing Bowl~");
	}
   }
   public class Pan {
	public Pan(){
		System.out.println("initialization Pan");
	}
   }
  

结果如下
    init ing Bowl~
initialization Pan
initialization Cupboard
 


此次总结还没有涉及到继承。
涉及到继承后会更复杂。日后会详细分析的^-^
分享到:
评论

相关推荐

    SIN初始化_混沌初始化_matlab_混沌映射_种群初始化_sin映射初始化粒子群_

    标题中的“SIN初始化_混沌初始化”指的是使用正弦混沌映射对粒子群进行初始位置的设置。混沌系统具有高度的敏感性,使得初始条件的微小差异可能导致显著不同的结果,这为种群的多样性和探索性提供了可能。SIN映射是...

    tft初始化程序.rar_4.5"TFT初始化_9481_ILI9338、_TFT初始化指令_tft初始化

    本篇将详细讲解与"4.5"TFT初始化相关的知识,特别是针对9481、ILI9338型号的TFT屏幕,以及TFT初始化指令。 首先,"4.5"指的是屏幕的对角线尺寸,这通常用于描述手机或平板电脑等设备的显示屏大小。4.5英寸的TFT屏幕...

    C++全局变量初始化的一点总结

    静态初始化发生在程序加载时,主要针对那些可以用常量表达的初始化,例如零初始化(zero initialization)和常量初始化(const initialization)。零初始化的变量通常存放在BSS段,而常量初始化的变量则位于数据段,...

    C#中结构(struct)的部分初始化和完全初始化实例分析

    本文将深入探讨结构的两种初始化方式:部分初始化和完全初始化,并通过实例分析其特点和注意事项。 首先,我们来看部分初始化。部分初始化是指在创建结构实例时只给一部分字段赋值,而其余字段保持默认状态。以下是...

    PCI设备BAR空间的初始化

    ### PCI设备BAR空间的初始化详解 #### 一、引言 在现代计算机系统中,PCI(Peripheral Component Interconnect,外围部件互连)总线是一种重要的高速扩展总线标准,广泛应用于连接各种硬件设备,如显卡、声卡、...

    java数组初始化详解

    Java 数组初始化详解 Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明...

    详解Spring 中如何控制2个bean中的初始化顺序

    我们可以在业务层自己控制 A 和 B 的初始化顺序,在 A 中设置一个“是否初始化的”标记,B 初始化前检测 A 是否得以初始化,如果没有则调用 A 的初始化方法,所谓的 check-and-act。 这种方法的优点是可以做到 lazy...

    8251 端口初始化

    在使用8251进行通信前,必须对其进行初始化,设置其工作模式和参数。 初始化过程主要涉及以下几个方面: 1. **配置控制寄存器**:8251有两个控制寄存器,即命令寄存器(Command Register, CR)和状态寄存器...

    LS-DYNA3D中的应力初始化_lsdyna_应力初始化_

    标题中的“应力初始化”是指在进行LS-DYNA3D模拟时,如何设定初始条件中的应力状态。在进行复杂的工程问题模拟时,正确设置初始应力对于获取准确的计算结果至关重要。 应力初始化通常涉及到以下几个关键知识点: 1...

    FANUC机器人初始化系统的基本方法和步骤.docx

    ### FANUC机器人初始化系统的基本方法和步骤 #### 一、引言 FANUC机器人的广泛应用使得其系统的维护与管理变得尤为重要。其中,初始化作为系统恢复的重要手段之一,不仅能够帮助用户解决软件故障问题,还能确保...

    C++构造函数初始化列表

    ### C++构造函数初始化列表详解 在C++编程语言中,构造函数是对象生命周期开始时自动调用的特殊成员函数,用于初始化对象的状态。构造函数初始化列表是C++中一个非常重要的特性,它允许程序员在对象创建时直接对类...

    比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;

    比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC;好像是六部十层;;比赛工程2,初始化上行至10层;电梯PLC...

    Revit+外部工具+无法初始化附加模块“CollaborateDB”,因为程序集C:\Prog+无法初始化附加模块的解决方法

    Revit外部工具无法初始化附加模块的解决方法 大家在安装完Revit或者卸载后重装Revit时是否遇到外部工具无法初始化附加模块的问题,每次打开不停的弹出对话框,烦得要死。 无法初始化附加模块“CollaborateDB”,...

    解决C++全局变量只能初始化不能赋值的问题

    C++中,全局变量只能声明、初始化,而不能赋值 也就是说,下面这样是不被允许的: #include using namespace std; int a; a = 2; int main() { return 0; } 错误提示是: C++ requires a type specifier for all...

    CSS样式初始化commonInitialize.css

    CSS样式初始化是开发过程中一个重要的步骤,它旨在消除浏览器之间的默认样式差异,确保网页在不同浏览器上的一致性表现。"commonInitialize.css"就是这样一个专门用于全局CSS样式初始化的文件。 首先,我们来理解...

    液晶显示器单片机初始化程序

    液晶显示器单片机初始化程序是实现微控制器与液晶显示器(LCD)之间通信的关键步骤,确保LCD能够正确地显示数据。本文将深入解析标题、描述、标签以及部分内容中提及的知识点,帮助读者理解单片机控制的液晶显示器...

    ADS环境下ARM系统两种初始化方式分析

    ### ADS环境下ARM系统两种初始化方式分析 #### 一、引言 随着32位芯片制造技术的不断发展和完善,越来越多的工程师开始关注32位微控制器的应用。ARM架构因其优秀的性能和广泛的应用,在32位微控制器领域占据了主导...

    typedef struct 与 struct 的区别及初始化

    初始化结构体时,通常有两种方式:构造函数初始化(如果结构体是类)和成员初始化列表。由于 `struct` 在C++中等同于类,但不支持构造函数,所以我们必须使用成员初始化列表。例如,对于 `PhotoInfo` 结构体,其初始...

    串口初始化代码分析

    "串口初始化代码分析" 在本文中,我们将对 LPC2366 串口初始化代码进行分析,主要包括波特率计算、管脚配置、工作模式选择、中断寄存器配置等内容。 一、管脚配置 在串口初始化过程中,首先需要配置管脚。这里使用...

    柯尼卡美能达7828载体初始化方法

    ### 柯尼卡美能达7828载体初始化方法详解 #### 一、概述 在使用柯尼卡美能达7828打印机的过程中,可能会遇到需要对载体进行初始化的情况。载体初始化是为了确保打印机能够正常工作并维持打印质量的重要步骤之一。...

Global site tag (gtag.js) - Google Analytics