文章目录

  • 前言
  • 创建对象
  • new关键字的作用
  • 构造方法
  • 什么是初始化
  • 构造方法的作用
  • 构造方法的两种形式
  • 参考引用

前言

这是我学习过程中做的总结,如有不对见谅。


创建对象

       我们用Demo类来创建一个对象。

Demo demo=new Demo();这一条语句,其实包括了四个动作:1)右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo对象。2)末尾的()意味着,在对象创建后,立即调用Demo类的构造函数,对刚生成的对象进行初始化。3)左边的“Demo demo”创建了一个Demo类引用变量,它存放在栈空间中。也就是用来指向Demo对象的对象引用。4)“=”操作符使对象引用指向刚创建的那个Demo对象。

形象说明:

如生产汽车,类只是汽车设计图,new可以理解为制造或生产,new car()可以看成是以car这个设计图默认的属性生产了一辆车,现在这个车就是实际存在的对象,它创建对象时构造函数使用设计图默认定义的车的形状、重量、油箱的容积等参数造的这辆车。而使用new car (shape,hight,tank_volume)传递参数来修改设计图的部分属性,然后再以修改后的图纸生产汽车。

实例:

1.首先创建一个类,我这里创建的是一个学生类,里面有学生的姓名、年龄。

//1.首先创建一个类,我这里创建的是一个学生类,里面有学生的姓名、年龄。
public class Student {String name;    //姓名int age;        //年龄/*2.类是抽象的,需要实例化为具体的对象,也就是创建一个对象,实例化后会返回一个对象,我们就像这样new 一个对象,这里的lihua,lihong就是Student类的具体实例。代码如下*/Student lihua = new Student();Student lihong = new Student();//3.对象初始化:接着需要对对象进行初始化,如果不初始化,输出的数据将会是默认值,代码如下lihua.name="李华";lihua.age=19;lihong.name="李红";lihong.age=18;

输出结果:

System.out.println(lihua.name);
System.out.println(lihua.age);
System.out.println(lihong.name);
System.out.println(lihong.age);
李华
19
李红
18

如果不初始化,我们来看一下运行结果 :

null
0
null
0

new关键字的作用

  1. new运算符实例化一个类对象的过程,通过给这个对象分配内存给实例变量赋默认值(半初始化)并返回一个指向该内存的引用
  2. new运算符也调用了对象的构造函数。

  3. new运算符返回的引用可以不需要被赋值给变量,所以它也可以直接使用在一个表达式中。

    例如: int height = new Rectangle().height;

  4. 注意:

    将成员变量赋默认值的是new而不是构造方法。

    参考: java中,默认的无参的构造方法的作用是什么?是不是初始化所有变量?_360问答

构造方法

        Java提供了为类的成员变量赋初值的专门方法,其功能主要是完成对象的初始化。

什么是初始化

对象的创建过程主要分成三步,如下图展示的汇编码所示,主要是0,4,7这三步。

0 这步是为新创建的对象申请内存,但是此时对象中的成员变量的值是默认的值(半初始化),即下图a 的值此时是0;

4 初始化对象,在这步才把10赋给成员变量a

7 建立关联,把testDemo引用和new 出来的TestDemo对象建立关联

从这里我们可以看出初始化可以认为是显示赋值,其实是将对应类型的隐式赋值用显示赋值覆盖的过程。,把10赋给原先半初始化的a,此时的a=0,赋值之后a=10。初始化对象的属性,准确的说是为对象的属性显示赋值。

public class TestDemo {private int a = 10;public static void main(String[] args) {TestDemo testDemo = new TestDemo();
//        0 new #2 <company/syncronized/TestDemo>       申请内存,半初始化,此时a的值是0(当对象刚new出来的时候会给里面的成员变量设置默认初始值,int类型的初始值是0)
//        3 dup                                         复制
//        4 invokespecial #3 <company/syncronized/TestDemo.<init>>    初始化,在这步把10赋给a,此时a的值是10
//        7 astore_1                                 testDemo和new TestDemo()建立关联
//        8 return}
}

构造方法的作用

构造方法是类的一种特殊的方法,主要体现在下面几个方面:

  1. 构造方法的名字和类名完全相同
  2. 构造方法有返回值(返回值是一个已经初始化的对象),没有返回值的类型。不能在构造器里调用return;
  3. 如果定义一个类的时候没有定义构造方法,系统会自动生成一个无参构造方法,如果定义了一个有参构造方法,想要使用无参构造方法就需要重新定义无参构造方法。
  4. 构造方法只能用在 new 创建类的对象时由系统调用。

构造方法的两种形式

编写构造方法的目的是向对象传递参数(一般有参),以及对成员变量进行初始化(一般无参)。


参考引用

为什么——要实例化对象? - 山外已有山 - 博客园

(38条消息) 子类一定会调用父类的构造器吗?如果会,那么子类为什么要调用父类的构造器?benbenniaono1的博客-CSDN博客子类会调用父类的构造函数吗 子类一定会调用父类的构造器吗?如果会,那么子类为什么要调用父类的构造器?_benbenniaono1的博客-CSDN博客_子类会调用父类的构造函数吗

java 之创建对象相关推荐

  1. 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  2. Java中创建对象的几种方式

    Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...

  3. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  4. java在创建对象时必须_Java中5种创建对象的方式

    以下是一些在Java中创建对象的方法: 1. 使用new关键字 使用new关键字是创建对象的最基本方法.这是在java中创建对象的最常见方法.几乎99%的对象都是这样创建的.通过使用这个方法,我们可以 ...

  5. 绝,Java 中创建对象的 5 种方法!

    我们日常生活中会创建很多对象,但是这个对象和你理解的那么对象不一样,因为作者不是女娲,不能造人.作者只是程序员,他只能在 Java 中创建对象. 那么我问你一个问题,你知道 Java 中如何创建对象吗 ...

  6. java中创建对象的方式

    Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码 使用new关键字 } → 调用了构造函数 使用Class类的newInstance方法 } → 调用了构造函数 使用Construc ...

  7. java clone方法_干货满满:Java中创建对象的五种方式详解

    通常来说,对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为. 作为Java开发者,我们通常都是使用依赖管理系统,比如Spring去创建Java对象,但使用管理系统创建对象并不是唯一 ...

  8. Java中创建对象的5种方式 -[转] http://www.codeceo.com/article/5-ways-java-create-object.html...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  9. Java中创建对象的5种方式

    转载 https://www.cnblogs.com/wxd0108/p/5685817.html 作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然 ...

  10. [转载] java中创建对象的方式

    参考链接: 用Java创建对象的不同方法 java中的4种创建对象的方式: 在这片博文中和大家简单分享一下常见的几种创建java对象的方式 1.使用 new 的方式,这也是我们最常见的一种方式 我们以 ...

最新文章

  1. Distilling the Knowledge in a Neural Network 论文笔记蒸馏
  2. Refresh your Java skills–面对Java学习过程中的一些迷茫
  3. 案例_文件下载_代码实现
  4. avalon 框架
  5. ASP.Net Core Web API 如何返回 File。
  6. 系统仿真平台SkyEye可替代国外Matlab/Sumlink等同类软件
  7. 解决配置linux环境每次重新连接都需要bash ~/.bashrc的问题
  8. 面试准备每日五题:C++(三)——全局局部变量、内存分配、strcpysprintfmemcpy、函数指针、引用
  9. centos7安装源疯了_Jenkins 在 Centos7 上安装(使用国内源)
  10. 为-微软-重写-TechNet Library-中-Microsoft Lync Server 2010
  11. java从以文件复制到另一文件_java将一个文件复制到另一个文件夹
  12. .Net语言的APP开发平台Smobiler3.2版本将于八月中旬发布!——3.2版本预告(二)
  13. 【高级持续性威胁追踪】SolarWinds供应链攻击持续跟踪进展
  14. 固态硬盘分为哪几种_固态硬盘有哪些接口 固态硬盘接口介绍【详解】
  15. 云南怎么办理ICP经营许可证?云南办理ICP经营许可证有哪些要求?
  16. b站前端老猫总结面试题
  17. 传统蓝牙服务问询协议SDP概念
  18. 计算机内存条价格,1g内存条的价格大全
  19. STM32F1外部8M晶振不起振的奇葩原因
  20. repo forall

热门文章

  1. 字体系列 (二):Typeface完全解析
  2. 代码整洁之道读书笔记——第一章:整洁代码
  3. go读取Excel(xlsx格式)文件
  4. axios简单配置及解决跨域
  5. win7远程桌面连接 Ubuntu 14.04
  6. matlab 中sqrt什么意思,25e3*sqrt(2)什么意?
  7. 苹果怎么关闭自动更新系统_如何关闭系统自动更新?
  8. yii2 连接mysql_yii2连接数据库失败
  9. Linux进程相关命令
  10. java进程CPU占用高如何排查-案例二