Java是面向对象的语言,需要把一个大的项目细化成相应的类,在通过一个个类实例化对象,实例化一般都要初始化属性,常见初始化属性的方式有以下几种

  1. 定义时初始化
class Person{String name = "张三";int age = 21;
}

2.代码块中初始化

class Person{String name ;int age ;{name = "张三";age = 21;}
}

3.构造方法初始化

class Person{String name ;int age ;public Person(){this.name = "张三";this.age = 21;}}

这是常见的三种常见的初始化属性的方式(如果有误希望评论区指正),既然方式不止一种,那么久牵扯到一个优先级的问题:


定义时初始化和代码块中初始化属于同一优先级,构造方法初始化属于次要优先级
就是说定义时初始化和代码块中初始化同时出现时因为它俩是同一优先级,执行顺序就是代码中的先后顺序
因为构造方法初始化属于次要优先级所以当构造方法初始化和其他两种方法同时出现在同一代码中时,不管代码顺序构造方法是否在前,都是先执行第一优先级的方法

如果有点迷,请看下面代码

class Person{//将第二优先级的构造方法初始化放在最前面public Person(){System.out.println("我是构造方法初始化");this.name = "李四";}//定义时初始化String name = example(); ;//代码块中初始化{System.out.println("我是代码块中初始化");this.name = "王二";}public String example(){System.out.println("我是定义时初始化");return "张三";}}public class Main {public static void main(String[] args) {Person a = new Person();}
}

运行结果如下:

所以处于第二优先级的方法和第一优先级的方法付同时出现时,不管第二优先级的方法在代码中是先是后他都是后于第一优先级方法执行的。

Java对象初始化执行顺序相关推荐

  1. 阿里面试题——Java对象初始化

    Java对象初始化 这是一道阿里巴巴的关于Java对象初始化的面试题,堪称经典,代码很简单(编写格式做了些修改),但是需要面试者对Java中对象初始化有一个透彻的认识,那么通过这道面试题,对我有点启发 ...

  2. Java子类和父类的初始化执行顺序

    有个朋友在CSDN评论区问我,java子类和父类初始化时各个代码块的执行顺序,我本来写好了一大段回复,点击发表回复,结果没有回复成功,我写的评论也不见了...csdn的评论区编辑体验本来就不好,然后还 ...

  3. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

  4. java 构造函数的执行顺序

    在此我用类似<Thinking in Java>的一个例子来说明 pakage com.yqs.test class Milk { publcic Milk() { System.out. ...

  5. java的for的执行顺序_对java for 循环执行顺序的详解

    如下所示: for(表达式1;表达式2;表达式3) { //循环体 } 先执行"表达式1",再进行"表达式2"的判断,判断为真则执行 "循环体&quo ...

  6. Java对象初始化顺序

    今天我在淘宝Blog阅读了一篇关于java对象实例初始化顺序的文章,讲得挺好的,还严谨地找出了JLS. 觉得Demo代码例子举的不简练,我写了一个Demo代码,狗尾续貂一下 :D 示例代码 packa ...

  7. java 对象初始化过程_Java——对象初始化顺序使用详解

    一. 代码块的概念 在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念. class Test{ public static String str1; //静态字段 public Stri ...

  8. java构造函数的执行顺序,java构造函数和初始化函数的执行顺序

    1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)>    main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...

  9. java 对象初始化_Java对象初始化

    自动初始化(默认值) 一个类的所有基本数据成员都会得到初始化,运行下面的例子可以查看这些默认值: classDefault{booleant;charc;byteb;shorts;inti;longl ...

最新文章

  1. 五、curator recipes之选举主节点Leader Latch
  2. LeetCode面试刷题技巧-二分查找算法代码思路解析
  3. 《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度
  4. Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略
  5. 微服务架构 接口交互问题_架构师的故事:设计微服务架构
  6. w10计算机无法打印,win10升级后惠普无法打印怎么解决_win10升级后惠普打印不了的处理办法...
  7. vi交互式批量替换 vi批量替换 vi查找和替换
  8. OpenLDAP 2.4.44 安装 + phpLDAPadmin 安装
  9. 前端进阶试题-CSS篇
  10. 2Y叔的clusterProfiler-book阅读Chapter 2 Functional Enrichment Analysis Methods
  11. [简单]1.宝石和石头
  12. JS中的数组排序函数sort()
  13. VC6.0 操作Excel表格
  14. 关于nvme固态硬盘安装系统的一点经验
  15. ListView组件的应用
  16. 【渝粤教育】电大中专电商运营实操 (4)作业 题库
  17. 【MQTT基础篇(一)】MQTT介绍
  18. 技术的理想该继续吗?
  19. 【AcWing周赛】AcWing第86场周赛
  20. 十款入门级微信小程序源码分享之三

热门文章

  1. ListView缓存机制踩过的坑
  2. SQL 必知必会·笔记7汇总数据——使用聚合函数
  3. 搭建MVC及WebAPI项目框架时碰到的问题集合
  4. PHP 查找链表倒数第i个节点
  5. [JavaScript] promise中.then()方法
  6. ES6学习笔记(五):轻松了解ES6的内置扩展对象
  7. 初识JAVA--foreach语句的应用
  8. python dataframe索引转成列_如何将 Pandas DataFrame 的索引转换为列
  9. cmd查看端口占用情况 和 关闭被占用的端口
  10. 天天爱跑步——树上差分