Java类的实例化的初始化过程
A a = new A();
new 创建对象过程:
1.类加载
代码验证
2.给对象在内存(堆)中分配空间(给属性赋值);
3.属性赋默认值;
byte,short.int,long ->0
float ->0.0f
double ->0.0
boolean ->false
String ->null
char ->'\u0000'
4.给属性赋初始值;(用等号‘=’)
5.调用构造方法(方法和类名相同,没有返回类型)
6.将对象在堆区中的首地址返回给引用a
/*
* Java类实例化的初始化过程.
* 执行顺序:
* (静态变量->静态初始化块)->main->(实例变量->实例初始化块)->构造器
*/
public class NewInstanceTest1
{
public static void main(String[] args)
{
System.out.println("main");
System.out.println("---111---");
new NewInstanceTest1();
System.out.println("---222---");
new NewInstanceTest1();
}
private static int i = 1;
public static String sStr = "静态变量";
public String iStr = "实例变量";
{
// 实例初始化块
System.out.println("进入实例初始化块");
System.out.println("实例初始化块中调用变量:" + iStr);
System.out.print("实例初始化块中调用方法:");
iTalk();
}
static
{
// 静态初始化块
System.out.println("进入静态初始化块");
System.out.println("静态初始化块中调用变量:" + sStr);
System.out.print("静态初始化块中调用方法:");
sTalk();
}
public static void sTalk()
{
// 静态方法
System.out.println("静态方法" + "/静态变量值" + (++i));
}
public void iTalk()
{
// 实例方法
System.out.println("实例方法");
}
public NewInstanceTest1()
{
// 构造器
System.out.println("构造器");
}
}
// 输出结果:
进入静态初始化块
静态初始化块中调用变量:静态变量
静态初始化块中调用方法:静态方法/静态变量值2
main
---111---
进入实例初始化块
实例初始化块中调用变量:实例变量
实例初始化块中调用方法:实例方法
构造器
---222---
进入实例初始化块
实例初始化块中调用变量:实例变量
实例初始化块中调用方法:实例方法
构造器
Java类的实例化的初始化过程的更多相关文章
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- [转载]解析 Java 类和对象的初始化过程
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html 由一个单态模式引出的问题谈起 类的初始化和对象初始化 ...
- 创建Java类并实例化的基本过程
package com.sanguosha.java; /* * 面向对象实现的过程 * 1.创建类并设计类的成员(成员变量即属性and成员方法即方法) * 2.通过类来创建类的对象,也称类的实例化 ...
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...
- java中类的创建及初始化过程
java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程. 首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...
- 创建java类并实例化类对象
创建java类并实例化类对象例一1.面向对象的编程关注于类的设计2.设计类实际上就是设计类的成员3.基本的类的成员,属性(成员变量)&方法 面向对象思想的落地法则一:1.设计类,并设计类的成员 ...
- 【基础】java类的各种成员初始化顺序
父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序 前言: 普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出 ...
- 【Thinking in Java】类和对象的初始化过程
在Java中, 当一个类被调用的时候,它的初始化过程是怎么样的呢? 当一个类被实例化的时候,它的初始化过程又是怎样的呢? 为什么static方法不能未经对象就调用非static方法? 下面我们通过例子 ...
- Java基础——类和对象的初始化过程
本节把类和对象的初始化所涉及到的所有代码块阐述一边. 示例代码: public class Demo { private static String name; private String age; ...
随机推荐
- LaTeX排版设置图表的位置 Positioning images and tables
Positioning images and tables LATEX is an editing tool that takes care of the format so you only hav ...
- QT creator出现 no executable specified时解决办法
1. 本人是在linux/ubutun中使用QT creator,一次编译程序的时候出现了“no executable specified”的错误而无法运行程序.解决办法: 在用QT crea ...
- go语言基础之函数类型
1.函数类型 示例: package main import "fmt" func Add(a, b int) int { return a + b } func main() { ...
- django ORM创建数据库方法
1.指定连接pymysql(python3.x) 先配置_init_.py import pymysql pymysql.install_as_MySQLdb() 2.配置连接mysql文件信息 se ...
- java设计模式5--原型模式(Prototype)
本文地址:http://www.cnblogs.com/archimedes/p/java-prototype-pattern.html,转载请注明源地址. 原型模式 用原型实例指定创建对象的种类,并 ...
- SVN — subclipse操作指引
摘自: http://jiangzhengjun.iteye.com/blog/491824 安装插件:请参照http://subclipse.tigris.org/servlets/ProjectP ...
- 开发者和系统管理者最喜爱的开源工具Vim 起步学习的五个技巧
多年来,我一直想学 Vim.如今 Vim 是我最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.我说的学习,指的是真正意义上的学习.想要精通确实很难,所以我只想要达到熟练的水平 ...
- RS报表设计采用Total汇总过滤出错
错误信息: DMR 子查询计划失败,并产生意外错误.: java.lang.NullPointerException 如图 原因是在RS过滤器中添加了: total([门诊人次] for [明细科室] ...
- crm2013安装和部署语言包
步骤 1:安装语言包 假设具有执行 Microsoft Dynamics CRM for Microsoft Office Outlook 的用户,除了在执行 Microsoft Dynamics C ...
- Eclipse启动Tomcat错误(其他类似)
Eclipse启动Tomcat错误信息: Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are alre ...