java中创建对象了,显示初始化值和构造函数初始化对象的区别?先后执行顺序是什么?

如题所述

两个都可以初始化值,本质上没有区别,不同的是执行的先后。构造方法初始化值时需要包含有参的构造方法,创建对象时使用Object obj = new Object(arg1,arg2)的形式,你说的显示初始化值应该是使用set方法吧,比如obj.setArg1(arg1)的形式。执行顺序肯定是构造方法的形式要在前了,因为在对象创建之后就会给属性赋值,而set方法形式赋值只会在你调用set方法时才会赋值。
再插一点题外话:其实在对象创建时成员变量已经初始化了,只是初始化的都是变量对应类型的默认值,比如int类型的默认值是0,引用类型默认值是null,boolean类型默认值是false。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-10
先初始化对象吧,这样才能给对象的属性赋值,不太懂...
第2个回答  2013-07-30
一、初始化和赋值对内置类型的成员没有什么大的区别,像任一个构造函数都可以。但有的时候必须用带有初始化列表的构造函数:
(1) 成员类型是没有默认构造函数的类。若没有提供显式初始化时,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。

(2) const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。

还有一个赋值次数,效率上的区别,初始化参数列表在对象初始化时对成员变量赋值一次,构造函数内直接赋值,对成员变量赋值两次,一次是对象构造是用默认值进行赋值,第二次是调用构造函数赋值

二、在java中创建对象的过程中,会先执行无参构造函数,接着执行下面的语句本回答被提问者采纳

JAVA类中属性定义初值与构造函数赋初值有什么区别
感觉属性定义初值的话只要有这个类的对象,该属性就被赋值了 而如果用构造函数的话,则必须进行初始化之后才赋值 比如说Student a的时候,如果属性定义初值,则name就已经有值了 而如果是构造函数,则必须是Student a = new Student("XX")之后,才会被赋值 ...

java 类中定义一个类,这两个类构造函数先后问题
JAVA初始化顺序 1、调用顺序:JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。先初始化父类的静态代码--->初始化子类的静态代码--> (创建实例时,如果不创建实例,则后面的不执行)...

java中一个类里面如果有初始化块和静态块 那么构造此类的一个对象时...
先执行静态块再执行构造函数 所有类最先执行的都是静态块

java中关于对象初始化的问题
创建对象时,初始化的顺序是由变量在类的定义里的顺序所决定。变量的定义可以分散在类定义中的各个地方,并且与方法定义相互交错,但是变量的初始化会优先于任何方法,甚至是构造函数的调用。在变量中又可以分为静态变量和非静态变量,在创建对象或调用类的静态方法时,首先会对类的所有静态成员进行初始化...

在Java中new一个对象的流程是怎样的?
5. 返回对象引用 构造函数执行完毕,返回对象引用至创建处,供后续代码访问实例变量和方法。以下示例展示创建Person对象的过程:new Person("John", 25)语句创建Person实例。执行类加载、内存分配、初始化零值、调用构造函数等步骤。构造函数初始化name和age实例变量。最后返回对象引用,供后续访问。

java中new一个对象,和用构造器有什么区别!
构造方法会在实例化时自动调用,一般完成一些初始化之类的工作.

求大神指教在java程序中构造器和构建器有区别吗?
在Java程序中,构造函数(Constructor)和构建器(Builder)确实有区别,尽管它们在用途上有一定的相似性。构造函数是一种特殊的成员方法,用于在创建对象时初始化对象。它的名称必须与类名完全相同,并且没有返回类型,连void都没有。构造函数的主要目的是在对象创建时分配内存并初始化对象的状态。每个类...

什么是构造函数?它的作用和特点我都已了解。。。它具体在哪里出现...
构造函数与其他方法的区别 1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管...

java中生成一个对象给他赋值是用构造速度快还是用set方法比较快_百度知 ...
一个User对象,他的名字是必须的,而年龄,性别之类的可以先不填写 那么这时候可以在构造方法中给名字(name)赋值,其他的非必须的可以用set方法 如果一般性的看,其实都是一样的,虽然name是必须属性,但是你可以先new一个不带name的然后紧跟一条set语句。但两者之间有一点点小区别的,起码你提供一...

java语言,什么是初始化啊?初始化和实例化一样吗?
java中不管对象也好,还是基本数据类型也好,你声明它的时候,它们都称为变量,在你使用变量前给变量进行赋值,这就是变量的初始值,因此叫变量初始化。实例化是指对象的创建,一般是指通过 new 关键字(当然还有其他途径,比如反射),在堆中为对象分配内存,这就是实例化。举个非常简单的例子,你知道...

相似回答