JAVA基础篇 之 类的初始化
类中属性的隐式初始化,代码如下,我们看下不同类型默认的初始值是什么
创建一个Demo类如下:
class Demo {
int a;
byte b;
short c;
long d;
boolean e;
char f;
float g;
double h;
Demo demo;
}
可以看到初始化的值如下:

在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间。它们仍然会在任何方法(包括构造器)被调用之前得到初始化。
我们看如下代码:
public class Test01 {
public static void main(String[] args) {
House house = new House(3);
}
static class House {
Window window3 = new Window(3);
public House(int windows) {
System.out.println("house(" + windows + ")");
}
Window window1 = new Window(1);
Window window2 = new Window(2);
}
static class Window {
public Window(int marker) {
System.out.println("window(" + marker + ")");
}
}
}
打印结果如下:
window(3)
window(1)
window(2)
house(3)
可以看到,在初始化时,会先对类中的属性进行显示初始化,即对属性进行一次显示的赋值,在显示初始化执行完后,会对类进行构造函数初始化。
静态数据的初始化
首先我们要知道,静态数据是所有类对象共享的,静态数据只占一份存储区域。静态数据随着类的加载而加载,static关键字只能作用于域,我们不能在方法中使用static关键字(稍后会解释为什么)。如果一个我们在声明类时,没有给静态只能初始值,那么它会被默认初始化成对应的值(见【1】默认初始化)
这里提前说一下:
对于初始化我们要记得一个原则,先静态后非静态,先父后子
即在初始化一个类时,会先初始化对静态数据进行初始化,在父类跟子类同时有静态数据时,遵循先父后子的规律,当静态数据初始化完后,非静态的数据初始也遵循先父后子的顺序
JAVA基础篇 之 类的初始化的更多相关文章
- java基础篇 之 构造器内部的多态行为
java基础篇 之 构造器内部的多态行为 我们来看下下面这段代码: public class Main { public static void main(String[] args) { new ...
- java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
- Java基础篇(JVM)——类加载机制
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇
Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
- Java基础篇 - 强引用、弱引用、软引用和虚引用
Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...
随机推荐
- AJ学IOS 之第一次打开Xcode_git配置,git简单学习
AJ分享,必须精品 一:错误 当第一次打开Xcode我们进行commit操作的时候会报错: The working copy “测试” failed to commit files. * Please ...
- 选择IT行业的自我心得,希望能帮助到各位!(二)
在前面说道的一,希望大家能喜欢,这也只是自己的一种经历,每个人都有年轻的时候,谁的年级都有自以为是,谁的年轻都有风华正茂,谁的年轻都让自己的内涵给我们自己摔了一个狠狠的道理,人外有人天外有天.我记得当 ...
- threejs地球之后:动画的控制
上一篇知道如何制作threejs地球之后,就正式coding了,当然还是使用最心爱的Vue.本篇会有一些代码,但是都是十几行的独立片段,相信你不用担心. 布局 在进入本篇主题前,要简单看一下xplan ...
- sqli-labs通关教程----31~40关
第三十一关 这关一样,闭合变成(",简单测试,#号不能用 ?id=1") and ("1")=("1")--+ 第三十二关 这关会把我们的输 ...
- jmeter DB2数据库连接与操作
1.需要把数据库连接jar包拷贝到 jmeter lib目录下 先创建一个数据库连接配置元件 2.添加jdbc请求(我用的后置处理器) 3.可以通过beanshell 对结果集进行操作 beanshe ...
- 模拟电磁曲射炮_H题 方案分析【2019年电赛】【刘新宇qq522414928】
请查看我的有道云笔记: 文档:电磁曲射炮分析.note链接:http://note.youdao.com/noteshare?id=26f6b6febc04a8983d5efce925e92e21
- windows下部署.netcore+docker系列二 (unbuntu 18.4 下 安装 docker)亲测!!!
1.卸载sudo apt-get remove docker docker-engine docker.io containerd runc2.更新sudo apt-get update3.安装依赖包 ...
- MySQL系列(四)
本章内容: 主从复制 简介原理 Mysql主从同步脚本部署 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增量恢复 ...
- 15个有趣好玩的linux shell 命令
今天介绍一些有趣的linux shell命令,所有的命令都可以使用man + 命令名称 来查看完整的使用方法. 1,figlet 字符画 figlet 可以将英文字符串以字符画的形式输出: >& ...
- 如何在Spring boot中修改默认端口
文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ...