java中对象的初始化问题
最近又把java编程思想看了看。又有些收获。此书确实不错
java中的初始化相信很多人都知道。但是具体的初始化步骤,初始化几次确不一定。上代码
public class A{ public static A a = new A(); public static int i; public static int j= 2; public A(){ i++; j++; } public static void main(String[] args){ A a1= new A(); System.out.println("i = " + a1.i); System.out.println("j= " + a1.j); } }
输出结果是什么呢?
2和3.
对于java而言,构造对象时首先会执行自动初始化动作。即 初始化为
A=null;
i=0;
j=0;
然后再次初始化话定义的默认值
a=new A();
此处执行构造器导致i++,j++,结果
i=1;
j=1;
之后给a赋值,此时a不在为null,
然后就有点意思了
继续执行 i的默认初始化,因为i没有设置默认值,所以i还是1,然后j由于有默认值j变成了2
i=1;
j=2;
最后在执行构造器i++,j++
最后结果
i=2;
j=3;
如果此处把a这个特殊的情况去除可以看出。初始化有三个步骤:
1.自动初始化为基本类型0,引用类型为null
2.设置默认值
3.执行构造器
java中对象的初始化问题的更多相关文章
- java中对象产生初始化过程
以前面试的时候,很多公司的笔试题中有关new一个对象有关一系列初始化的过程的选择题目.请看下面的题目. class Parent { static { System.out.println(" ...
- java中对象的初始化过程
class Parent{ int num = 8;// ->3 Parent(){ //super(); // ->2 //显示初始化 // ->3 //构造代码段 // -> ...
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- java基础-对象的初始化
一 前言 本节内容将会提到方法重载,对象的初始化,对象的构造器,和this关键字的使用,以及会简要的概括一下java中对象回收机制.觉得文章不错的读者可以关注一下作者的博客和公众号(同博客名称) 二 ...
- Java中对象和引用的理解
偶然想起Java中对象和引用的基本概念,为了加深下对此的理解和认识,特地整理一下相关的知识点,通过具体实例从两者的概念和区别两方面去更形象的认识理解,再去记忆. 一.对象和引用的概念: 在Java中万 ...
- Java中对象的生与灭- 核心篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中对象的生与灭- 核心篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论区回复或后台私信,谢啦 简介 ...
- 你真的了解JAVA中对象和类、this、super和static关键字吗
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...
- Java中对象的深复制和浅复制详解
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
随机推荐
- Apache NIFI
Add a.password file to chrome. Settings -> Advanced -> Security -> Manage Certificates -> ...
- POJ3258 River Hopscotch(二分最大化最小值)
题目链接:http://poj.org/problem?id=3258 题意:给n个石头,起点和终点也是两个石头,去掉这石头中的m个,使得石头间距的最小值最大. 思路:二分石头间的最短距离,每次贪心地 ...
- window环境下获取python安装的路径
1.cmd + win 打开命令行 2.where python
- 基于Docker的Mysql Cluster集群
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...
- AcWing 900. 整数划分
#include <iostream> #include <algorithm> using namespace std; , mod = 1e9 + ; int n; int ...
- 需要再次删除清空部署才能用rancher部署成功的是docker有问题
需要再次删除清空部署才能用rancher部署成功的是docker有问题 待办 可以解释为什么一定要用特定的docker版本
- redis 解决秒杀
# import redis pool = redis.ConnectionPool(host = '127.0.0.1', port=6379, db=0)#创建连接池 r = redis.Redi ...
- 计算机系统概论之CPU(central processing unit)
CPI表示每条指令(Instruction)周期数,即执行一条指令所需的平均时钟周期数.可用下式计算: CPI=执行某段程序所需的CPU(Centrol Processing Unit)时钟周期数/程 ...
- ASP学习笔记1
一.变量 1.1 声明变量 dim name name="Donald Duck" response.write("My name is: " & na ...
- MongoDB-2 安装与配置
安装建议 MongoDB 可以在mac/win/linux上安装,我个人建议在linux上安装会更好,这样测试起来更方便.一般来说本地只装mysql或者MariaDB,其余的中间件一律放linux,让 ...