Java学习历程之————进阶篇(五)

愿每次回忆,对生活都不感到负疚。

——郭小川

前言:

本周我们学习Java对象的创建,我们在前面进阶篇(一)中已经详细说明了类和对象的区别与联系,大家还记得么?比如“人”是一个类,而编写此篇推文的我和正在看此推文的你都是一个对象,类是一个抽象的概念,而对象就是一个具体的事物。对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。下面我们分别来说明。

一、显式创建对象

对象的显式创建方式有 4 种。

1.1、使用 new 关键字创建对象

    这是常用的创建对象的方法,语法格式如下:

类名 对象名 = new 类名();

1.2、调用  java.lang.Class  或者  java.lang.reflect.Constuctor  类的  newlnstance()  实例方法   

      在  Java  中,可以使用  java.lang.Class  或者 java.lang.reflect.Constuctor  类的  newlnstance()  实例方法来创建对象,代码格式如下:

      java.lang.Class Class 类对象名称 = java.lang.Class.forName(要实例化的类全称);

     类名 对象名 = (类名)Class类对象名称.newInstance();

     调用 java.lang.Class 类中的 forName() 方法时,需要将要实例化的类的全称(比如 com.mxl.package.Student)作为参数传递过去,然后再调用 java.lang.Class 类对象的 newInstance() 方法创建对象。

1.3、调用对象的 clone() 方法   

    该方法不常用,使用该方法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接口。调用对象的 clone() 方法创建对象的语法格式如下:

类名对象名 = (类名)已创建好的类对象名.clone();

1.4、用 java.io.ObjectlnputStream 对象的 readObject() 方法

二、隐式创建对象

Java 程序中还可以隐含地创建对象,例如下面几种情况。

1)String strName = "strValue",其中的“strValue”就是一个 String 对象,由 Java 虚拟机隐含地创建。

2.1

2)字符串的“+”运算符运算的结果为一个新的 String 对象,示例如下:

String str1 = "Hello";

String str2 = "Java";

String str3 = str1+str2;    // str3引用一个新的String对象

2.2 

3)当 Java 虚拟机加载一个类时,会隐含地创建描述这个类的 Class 实例。

2.3 

提示:类的加载是指把类的 .class 文件中的二进制数据读入内存中,把它存放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。

三、创建对象步骤

无论釆用哪种方式创建对象,Java 虚拟机在创建一个对象时都包含以下步骤:

① 给对象分配内存。

② 将对象的实例变量自动初始化为其变量类型的默认值。

③ 初始化对象,给实例变量赋予正确的初始值。

          

注意:每个对象都是相互独立的,在内存中占有独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成了垃圾,由 Java 虚拟机自带的垃圾回收机制处理。

          

四、实战

    下面我简单的介绍一下常用的两种对象的创建方法,后面的学习过程中我们也会继续用到。运行结果及截图如下:

源码如下:

package second.Test5;
import java.lang.*;
public class People implements Cloneable {
    // 实现 Cloneable 接口
    private String Name;    // 名字
    private String sex;    // 性别
    public People(String name,String sex) {
        // 构造方法
        this.Name = name;
        this.sex = sex;
    }
    public People() {
        this.Name = "小陈";
        this.sex = "男";
    }
    public String toString() {
        return"名字:"+Name+",性别:"+sex;
    }
    public static void main(String[] args)throws Exception {
        System.out.println("---使用 new 关键字创建对象---");
        // 使用new关键字创建对象
        People people1 = new People("小李","女");//调用两个参数的构造方法
        System.out.println(people1);
        People people2 = new People();//调用无参数的构造方法
        System.out.println(people2);
        System.out.println("---调用对象的 clone() 方法创建对象---");
        // 调用对象的 clone() 方法创建对象
        People people3 = (People)people2.clone();
        System.out.println(people3);
    }
}

小编有话说:

      半学期的时光转瞬即逝,谢谢大家的陪伴,寒假将至,但我仍希望和大家一起按照之前的进度继续学习Java,学习犹如逆水行舟,不进则退。我们先攻克类和对象这座大山,小编现在也在努力学习中,调用 java.lang.Class类的 newlnstance() 实例方法小编暂时没调试出来,大家有兴趣可以试一下。好了,我们下周再会~

编辑:玥怡居士|审核:世外居士

往期精彩回顾

Java学习历程----进阶篇(四)

Java学习历程----进阶篇(三)

Java学习历程----进阶篇(二)

长按扫码关注

好文!必须点赞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值