精华内容
下载资源
问答
  • Java创建对象

    2020-11-02 15:40:15
    创建对象时 什么时候用类名,什么时候用主类名?
  • Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建...

    对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建隐含创建两种情况。
    显式创建对象
    对象的显式创建方式有 4 种。
    1. 使用 new 关键字创建对象
    这是常用的创建对象的方法,语法格式如下:
    类名 对象名=new 类名();
    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() 方法创建对象。
    3. 调用对象的 clone() 方法
    该方法不常用,使用该方法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接口。 调用对象的 clone() 方法创建对象的语法格式如下:
    类名对象名=(类名)已创建好的类对象名.clone();

    4. 调用 java.io.ObjectlnputStream 对象的 readObject() 方法
    例 1
    下面创建一个示例演示常用的前三种对象创建方法。示例代码如下:

    public class Student implements Cloneable
    {   
        //实现 Cloneable 接口
        private String Name;    //学生名字
        private int age;    //学生年龄
        public Student(String name,int age)
        {    //构造方法
            this.Name=name;
            this.age=age;
        }
        public Student()
        {
            this.Name="name";
            this.age=0;
        }
        public String toString()
        {
            return"学生名字:"+Name+",年龄:"+age;
        }
        public static void main(String[] args)throws Exception
        {
            System.out.println("---------使用 new 关键字创建对象---------");
           
            //使用new关键字创建对象
            Student student1=new Student("小刘",22);
            System.out.println(student1);
            System.out.println("-----------调用 java.lang.Class 的 newInstance() 方法创建对象-----------");
           
            //调用 java.lang.Class 的 newInstance() 方法创建对象
            Class cl=Class.forName("Student");
            Student student2=(Student)cl.newInstance();
            System.out.println(student2);
            System.out.println("-------------------调用对象的 clone() 方法创建对象----------");
            //调用对象的 clone() 方法创建对象
            Student student3=(Student)student2.clone();
            System.out.println(student3);
        }
    }
    
    

    对上述示例的说明如下:
    使用 new 关键字或 Class 对象的 newInstance() 方法创建对象时,都会调用类的掏造方法。
    使用 Class 类的 newInstance() 方法创建对象时,会调用类的默认构造方法,即无参构造方法。
    使用 Object 类的 clone() 方法创建对象时,不会调用类的构造方法,它会创建一个复制的对象,这个对象和原来的对象具有不同的内存地址,但它们的属性值相同。
    如果类没有实现 Cloneable 接口,则 clone。方法会抛出 java.lang.CloneNotSupportedException 异常,所以应该让类实现 Cloneable 接口。

    程序执行结果如下:

    ---------使用 new 关键字创建对象---------
    学生名字:小刘,年龄:22
    -----------调用 java.lang.Class 的 newInstance() 方法创建对象-----------
    学生名字:name,年龄:0
    -------------------调用对象的done()方法创建对象----------
    学生名字:name,年龄:0
    

    隐含创建对象
    除了显式创建对象以外,在 Java 程序中还可以隐含地创建对象,例如下面几种情况。
    ①String strName=“strValue”,其中的“strValue”就是一个 String 对象,由 Java 虚拟机隐含地创建。
    ②字符串的“+”运算符运算的结果为一个新的 String 对象,示例如下:
    String str1=“Hello”;
    String str2=“Java”;
    String str3=str1+str2; //str3引用一个新的String对象
    ③当 Java 虚拟机加载一个类时,会隐含地创建描述这个类的 Class 实例。

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

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

    1. 给对象分配内存。
    2. 将对象的实例变量自动初始化为其变量类型的默认值。
    3. 初始化对象,给实例变量赋予正确的初始值。

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

    展开全文
  • java创建对象内存图

    千次阅读 2016-11-30 15:58:11
    java创建对象内存图解:
    java创建对象内存图解:
    java创建对象内存图

    展开全文
  • java创建对象的几种方式: (1) 用new语句创建对象,这是最常见的创建对象的方法。 (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法...

    java创建对象的几种方式:

    (1) 用new语句创建对象,这是最常见的创建对象的方法。
    (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
    (3) 调用对象的clone()方法。
    (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

    其中:

    (1)和(2)都会明确的显式的调用构造函数 ;

    (3)是在内存上对已有对象的影印,所以不会调用构造函数 ;

    (4)是从文件中还原类的对象,也不会调用构造函数。


    对象的初始化顺序:

    (1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;

    (2)当static语句执行完之后,再执行main方法

    (3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。



    展开全文
  • Java 创建对象的几种方式

    万次阅读 2017-02-22 17:09:52
    我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里...这里就总结一下创建对象的几种方式,来好好学习一下java创建对象的方式。一、使用new关键字这是我们最常见的也是最简单的创建对象的方式,通过这种方式

    我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里变成了根深蒂固的new方式创建,但是其实创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone方法去创建对象,通过序列化和反序列化的方式去创建对象。这里就总结一下创建对象的几种方式,来好好学习一下java创建对象的方式。

    一、使用new关键字

    这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数(无参的和有参的)。
    例如:

    User user = new User();

    二、使用反射机制

    运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

    1 使用Class类的newInstance方法

    可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。

    //创建方法1
    User user = (User)Class.forName("根路径.User").newInstance(); 
    //创建方法2(用这个最好)
    User user = User.class.newInstance();

    2 使用Constructor类的newInstance方法

    和Class类的newInstance方法很像, java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。

    Constructor<User> constructor = User.class.getConstructor();
    User user = constructor.newInstance();

    这两种newInstance方法就是大家所说的反射。事实上Class的newInstance方法内部调用Constructor的newInstance方法。

    三、使用clone方法

    无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。
    要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。

    public class CloneTest implements Cloneable{
        private String name;  
        private int age; 
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public CloneTest(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        public static void main(String[] args) {
            try {
                CloneTest cloneTest = new CloneTest("wangql",18);
                CloneTest copyClone = (CloneTest) cloneTest.clone();
                System.out.println("newclone:"+cloneTest.getName());
                System.out.println("copyClone:"+copyClone.getName());
            } catch (CloneNotSupportedException e) {
                e.printStackTrace();
            }
        }
    
    }

    执行

    newclone:wangql
    copyClone:wangql

    四、使用反序列化

    当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。
    为了反序列化一个对象,我们需要让我们的类实现Serializable接口。
    学习文章:Java对象的序列化与反序列化
    对象的序列化和反序列化涉及的东西比较多,等补充后再总结。

    参考文章:
    java中创建对象的方法
    Java中创建对象的5种方式
    Java中创建对象的几种方式
    JAVA中创建对象的四种方式

    展开全文
  • javaScript中创建对象和Java创建对象的区别

    千次阅读 多人点赞 2018-03-27 09:26:52
    Java和js创建对象的区别
  • Java创建对象的四种方式

    千次阅读 2019-02-21 18:30:07
    Java创建对象的方式从是否调用了构造函数可以分为两种 调用了构造函数 1)使用new关键字 2)使用Class类的newInstance方法: a.使用Class类的forName方法 b.使用ClassLoader类的loadClass方法 3)使用...
  • Java创建对象的过程简介

    千次阅读 2016-12-02 11:17:42
    简单记录一下Java创建对象的过程,就是new一个对象的时候发生了哪些事情。Java程序执行的过程在此不作说明,对象的创建过程只是程序执行过程的一部分。有关整个程序执行的过程,等熟悉了虚拟机之后在作说明。
  • Java创建对象的四种方法

    千次阅读 2019-05-22 16:33:56
    Java创建对象的四种方法 使用New关键字 使用Class类的newInstance方法,newInstance方法调用无参构造器创建对象(反射),Class.forName.newInstance(); 使用clone方法 反序列化 使用构造器的两种:New关键字...
  • Java创建对象的几种方法及扩展

    千次阅读 2018-04-28 23:02:24
    Java创建对象的几种方法及扩展标签(空格分隔): 面试创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone方法去创建对象,通过序列化和反序列化的方式去创建对象。...
  • java创建对象实例的四种方式

    千次阅读 2018-05-21 21:26:05
    java创建对象的方法常用的有四种:使用new关键字、利用java的放射机制、实现Cloneable接口使用克隆方法以及利用java序列化和反序列化实现创建对象。不说那么多,直接上代码。本次主要讲前三中创建方式,只是大致讲解...
  • Java创建对象的存储的区域

    千次阅读 2018-03-23 20:48:43
    Java创建对象的存储的区域 在JAVA的世界里一切都是对象,但是操作的标识符实际上的对象的一种“引用”。你拥有一个引用并不需要对象相关联 1、对象创建存储的地方寄存器 最快的存储区,位于处理器内部,但是寄存器...
  • Java创建对象的几种方式

    千次阅读 2013-12-19 09:35:30
    Java创建对象的几种方式: (1) 用new语句创建对象,这是最常见的创建对象的方法。 (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法...
  • 本文结合《Effective Java》第二章《创建和销毁对象》和自己的理解及实践,介绍了两种比使用构造器更优雅的创建对象方法,文章发布于专栏Effective Java,欢迎读者订阅。
  • java创建对象数组

    千次阅读 2018-11-27 10:31:29
    这个是对的 表示创建三个空间大小的对象数组 并且要注意! 这个时候创建的数组,数组本身不是空,但是数组元素都是null,需要自己去手动初始化,它并没有调用元素对象的构造方法,不能直接用...
  • java创建对象创建过程分析

    千次阅读 2017-11-27 21:10:45
    2.2对象创建十分频繁,如何解决并发带来的不安全问题   方法一 、同步,即对分配内存空间的动作进行同步处理-------采用CAS加上失败重试的方式保证更新操作的原子性。   方法二 、TLAB,把内存分配的动作按照...
  • java创建对象的几种方式

    千次阅读 2018-09-17 16:57:17
    1、通过java关键字NEW创建对象 最简单最常用的创建对象方式,包括无参的和有参的构造函数。 例如: 通过NEW关键字创建方式: Test test = new Test();//通过无参构造函数创建 Test test1 = new Test(this);//...
  • Java创建对象的4种方式

    万次阅读 2018-01-01 18:33:38
    使用new关键字通过new关键字直接在堆内存上创建对象,这样很方便的调用对象的有参和无参的构造函数.Student stu1 = new Student("lihua"); Class反射调用使用Java中反射特性,来进行对象的创建。使用Class类的new...
  • Java创建对象的5种方式

    万次阅读 2018-10-07 13:30:08
    Java有5种方式来创建对象: 使用 new 关键字(最常用):  ObjectName obj = new ObjectName(); 使用反射的Class类的newInstance()方法:  ObjectName obj = ObjectName.class.newInstance(); 使用反射的...
  • java 创建对象的几种不用方式

    千次阅读 2017-05-09 18:25:49
    作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字、使用Class类的newInstance方法、使用Constructor类的new...
  • JAVA创建对象有哪几种方式

    千次阅读 2015-06-09 17:11:59
    有4种显式地创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式。 2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 3.调用对象的clone...
  • Java 创建对象的四种方法

    千次阅读 2014-01-13 18:32:16
    package com.lou.creation... public class Client { public static void main(String[] args) { //1.使用new 方式创建对象 Worker worker1 = CreateInstanceUtil.createWorker(); Worker worker2 = CreateIns
  • Java创建对象过程中,内存的分配

    千次阅读 2017-05-24 16:56:50
    我们都知道,要使用类,就一定要为其创建对象。那么,在创建对象过程中,内存是如何分配的呢? 类的本质是一种引用数据类型,这与数组是一样的。比如本文提供的简单例子程序中的Person类,它有两个属性,name和age...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,427
精华内容 57,770
关键字:

java创建对象

java 订阅