java初始化
一、成员初始化
1.成员变量没有赋值,则被初始化成默认值。
2.局部变量没有赋值,编译时报错。
二、构造器初始化
1.成员变量在构造器初始化之前,已经被初始化。
2.变量定义的顺序决定了初始化的顺序。
三、静态数据初始化
1.static不能用于局部变量
2.初始化顺序:先静态对象(之前没有被初始化,因为静态对象只在类被加载的时候初始化一次),然后是"非静态"对象.
java对象初始化顺序:
总结:如果有个Dog类
1.即使没有显式使用static关键字,构造器实际上也是静态方法,因此当第一次创建Dog对象时,或者Dog类的静态变量或方法首次使用时,类加载器就会加载Dog.class.
2.加载完成后,静态初始化动作都会执行,静态的初始化只在加载类的时候执行一次‘
3.当用new创建对象时,首先在堆上分配足够的空间
4.这块存储空间会被清空,自动将Dog对象的所有基本类型都设置成默认值,引用类型被设置null
5.执行成员变量的初始化动作
6.执行构造器
java解释器运行过程:
1.找出环境变量classpath(.class文件的根目录)
2.解释器根据包名,解析出路径,在路径下找到编译后的class文件
java初始化的更多相关文章
- Java初始化过程
这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...
- Java初始化顺序
package com.helei.init; class Log { public static String fatherStaticString(){System.out.println(&qu ...
- (原)Java初始化过程
先看一个demo,然后进行归纳. class X{ static M m=new M(); Y y=new Y(); public X(){ System.out.print("X" ...
- Java初始化生命周期
package com.init; abstract class Glyph { void draw() { System.out.println("Glyph.draw()"); ...
- Java初始化理解与总结 转载
Java的初始化可以分为两个部分: (a)类的初始化 (b)对象的创建 一.类的初始化 1.1 概念介绍: 一个类(class)要被使用必须经过装载,连接,初始化这样的过程. 在装载阶段,类装载器会把 ...
- Java 初始化字段方式和顺序
Java 初始化字段方式和顺序: 类加载时直接初始化静态字段; 类加载时调用静态方法初始化静态字段; 实例化对象时,在调用构造函数之前代码块中初始化字段; 实例化对象时,在调用构造函数之时初始化字段; ...
- Java 初始化的个人理解
先说明一下由来吧,下面是同学的一道笔试题,以前感觉对java初始化也是了解一二的,结果,看到这题泪奔了,不会...上网查,自己添加println,总算是能把自己讲明吧了,不知理解的对不对,先记录下吧, ...
- [转]Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
Java初始化顺序1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包 ...
- JAVA学习笔记(2)—— java初始化三个原则
1. 初始化原则 (1) 静态对象(变量)优先于非静态对象(变量)初始化,其中静态对象(变量)初始化一次,非静态对象(变量)可能会初始化多次. (2) 父类优先于子类初始化 (3) 按照成 ...
- Java初始化方法:类、容器
Java初始化方法:类.容器 初始化类(非final): Struts2的DefaultActionMapper类中: public DefaultActionMapper() { ...
随机推荐
- linux输入子系统(input subsystem)之evdev.c事件处理过程
1.代码 input_subsys.drv.c 在linux输入子系统(input subsystem)之按键输入和LED控制的基础上有小改动,input_subsys_test.c不变. input ...
- WPF 自定义BarChartControl(可左右滑动的柱状图)
自定义可左右滑动.拖拽滑动的平面柱状图 在做这种样式控件之前,可先浏览我之前预研的控件: A.自定义左右滑动ScrollViewer(可拖动滑动) B.自定义Bar柱状图 OK,现在说下控件具体设计过 ...
- 项目自动化建构工具gradle 入门2——log4j输出helloWorld
上一章节呢,有一个能跑的程序了.但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点.比如使用log4j.直接上例子: 1进入D:\work\gradle\log目录 ,您电脑没 ...
- 安装Windows更新程序遇到错误:0x80070422
看看服务那里 windows update服务是不是被禁用了? 还有一个问题可能是由于Windows Modules Installer被禁用了.
- Why many EEG researchers choose only midline electrodes for data analysis EEG分析为何多用中轴线电极
Source: Research gate Stafford Michahial EEG is a very low frequency.. and literature will give us t ...
- [LeetCode] Range Sum Query 2D - Mutable 二维区域和检索 - 可变
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper lef ...
- FPGA与simulink联合实时环路系列——实验三 按键key
实验三 按键key 实验内容 在FPGA的实验中,经常涉及到按键的使用,按键是必不可少的人机交互的器件之一,在这些实验中,有时将按键的键值读取显示到数码管.LCD或者是通过串口传送到PC的串口助手上进 ...
- JavaScript模板引擎artTemplate.js——是否编码输出html字符
template.config(name, value)方法用于更改引擎的默认配置. 其中字段escape,类型为boolean,默认为true. 首先,我们不修改配置信息输出一段带有html标签的字 ...
- Stream与byte[]与Image与string
public byte[] GetByteImage(Image img) { byte[] bt = null; if (!img.Equals(null)) { using (MemoryStre ...
- php杂项
php5.3新增闭包函数用法use用法(引入变量地址且随内存中值变化而变化,跳过解析顺序直接获取函数最终值) $obj = (object) "Hello, everyone"; ...