精华内容
下载资源
问答
  • scala不使用new关键字创建对象实例

    千次阅读 2017-07-17 22:23:41
    在scala中,scala不使用new关键字创建对象实例,一般有2中方法: 1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法; 2.将类定义为case类。 1)用apply方法创建一个伴生对象: ...

    在scala中,scala不使用new关键字创建对象实例,一般有2中方法:

    1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法;

    2.将类定义为case类。


    1)用apply方法创建一个伴生对象:

    class ApplyOperation {
    }
    class ApplyTest{
        def apply() = println("I am into spark so much!!!")
        def haveATry: Unit ={
            println("have a try on apply")
        }
    }
    object ApplyTest{
         def apply() = {
              println("I  am into Scala so much")
            new ApplyTest
         }
    }
    object ApplyOperation{
         def main (args: Array[String]) {
            val array= Array(1,2,3,4)
            val a = ApplyTest() //这里就是使用object 的使用
    
             a.haveATry
             a() // 这里就是 class 中 apply使用
        }
    }
    

    运行结果

    I am into Scala so much
    have a try on apply
    I am into spark so much!!!

    object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例

    2)将类声明为case类

    case class Person(var :String)

    case的作用在于它在伴生对象生成了一个apply对象,更重要的是,case类生成的代码远不止apply方法。apply实际上是一个工厂方法。



    展开全文
  • 关于Java中使用new关键字创建对象

    千次阅读 2019-10-28 20:15:56
    在这条语句左边是在栈区创建一个对象的引用,就相当于告诉计算机我需要一个List类型的变量,但是我没有告诉它这个变量我要用来干什么,它的大小是多少。这时计算机只是创建了一个List集合的引用...

    关于Java中的堆和栈

    栈和堆

    栈存取速度比堆快而且数据可以共享,但栈中数据大小与生命周期必须确定

    对象创建的过程

    我们在需要使用List集合的时候通常会出现下面的语句

    List list = new List();

    在这条语句左边是在栈区创建一个对象的引用,就相当于告诉计算机我需要一个List类型的变量,但是我没有告诉它这个变量我要用来干什么,它的大小是多少。这时计算机只是创建了一个List集合的引用,此时没有地址只有一个名字而已。

    语句右边执行的时候会字堆内存中开辟内存空间,然后由Lsit对象的引用指向该内存空间。

    所以对于List,通常在代码中会有两种出现方式,一种就是上面那种通过new关键字开辟内存实现,还有就是只是申请引用,然后将其他引用赋给list对象。

    由此可见,当如果只是需要从其他地方去接收一个对象的值的时候完全没有必要去实例化一个对象,只需要创建一个引用即可,既节省了内存也简化了代码。当一个对象(除基本类型)需要自己进行数据的读写一系列操作的时候就必须得实例化。

    展开全文
  • 使用new关键字创建对象的三个作用

    千次阅读 2014-04-02 18:30:52
    通常而言,我们只会去用new关键字进行对象创建,而我们很少甚至大多数程序员没有正真去理解new的作用,下面我们就来看看:  主要有三个作用:  1.为对象实例分配内存空间(堆内存)  2.调用构造函数  3....

         通常而言,我们只会去用new关键字进行对象的创建,而我们很少甚至大多数程序员没有正真去理解new的作用,下面我们就来看看:

         主要有三个作用:

         1.为对象实例分配内存空间(堆内存)

         2.调用构造函数

         3.返回对象实例的引用(栈内存)

    展开全文
  • 当我们创建对象的前提,其实就是类必须要被加载了之后才能创建对象, 那么类是怎么被加载了的呢? 类的加载是通过jvm加载的,jvm在加载类的时候分为3个过程, 1.装载:查找并加载类的二进制数据 2.链接: (1)验证:确保被...

    首先一定要提示大家
    当我们创建对象的前提,其实就是类必须要被加载了之后才能创建对象,

    那么类是怎么被加载了的呢?

    类的加载是通过jvm加载的,jvm在加载类的时候分为3个过程,
    1.装载:查找并加载类的二进制数据
    2.链接:
    (1)验证:确保被加载类的正确性
    (2)准备:为类的静态变量分配内存,并将其初始化为默认值
    (3)解析:把类中的符号引用转换为直接引用()
    什么是符号引用:在编译时,java类并不知道所引用的类的实际地址,因此只能使用符号引用来代替。比如org.simple.People类引用了org.simple.Language类,在编译时People类并不知道Language类的实际内存地址,因此只能使用符号org.simple.Language(假设是这个,当然实际中是由类似于CONSTANT_Class_info的常量来表示的)来表示Language类的地址。

    什么是直接引用:
    (1)直接指向目标的指针(比如,指向“类型”【Class对象】、类变量、 类方法的直接引用可能是指向方法区的指针)
    (2)相对偏移量(比如,指向实例变量、实例方法的直接引用都是偏移量)
    (3)一个能间接定位到目标的句柄

    3.初始化:为类的静态变量赋予正确的初始值;

    当new一个对象,底层会做一些什么事情
    1.Jvm加载未加载的字节码,开辟空间
    2.静态初始化(1静态代码块和2静态变量)
    3.成员变量初始化(1普通代码块和2普通成员变量)
    4.构造器初始化(构造函数)

    如果这个类有父类的话,那么顺序一定是,1.父类静态代码块,2.父类静态成员,3.子类静态代码块,4.子类静态成员变量,然后是5.父类的普通代码块和6.普通成员变量和7.构造函数,8.子类的普通代码块和9.普通成员变量和10.构造函数

    展开全文
  • 下面介绍用new关键字创建对象的过程,这里的对象限于普通Java对象,不包括java 数组和Class对象。 虚拟机遇到new关键字时,主要有以下几步: 首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,...
  • new关键字创建对象的过程

    千次阅读 2018-08-09 14:14:52
    题目解析 先看代码 var Func=function(){ ...1、创建一个空对象 var obj=new Object(); 2、设置原型链 obj.__proto__= Func.prototype; 3、让Func中的this指向obj,并执行Func的函数体。 var r...
  • 在Java中创建对象的最简单方法是使用new关键字。让我们探索在Java中创建没有new关键字的对象的其他方法。 目录 使用Class.forName()和Class.newInstance() ClassLoader loadClass() 使用Object.clone() ...
  • 第二,使用new关键字创建对象属于强引用对象,所谓强引用,就是jvm垃圾回收机制永远不会回收这类对象,这时候需要程序员去手动去在应该移除引用的时候去将它移除。如果没有移除,这个对象将一直存在,久而久之,会...
  • 用构造方法构建对象使用new关键字和不使用new关键字的差别。
  • new关键字创建对象的实例化过程

    千次阅读 2017-05-21 21:39:53
    package com.yingcheng1101.object_oriented.newobject; //用于给Strudent,Person对象成员属性显示初始化时显示执行了动作的消息类 class InformationDisplay { public InformationDisplay(String str) {// ...
  • 可以看完这个图就懵了,以下是创建对象的六个步骤: 1、判断是否能在常量池中能找到类符号引用,并检查是否已被加载、解析、初始化(即判断类元信息是否存在) 如果没有则在双亲委派模式下,使用当前类加载器以...
  • 1 2 ...而第二种使用new,在堆中分配了内存,而栈中内存的分配和释放是由系统管理,而堆中内存的分配和释放必须由程序员手动释放,所以这就产生一个问题是把对象放在栈中还是放在堆中的问题...
  • 使用new关键字创建对象和不使用的区别 使用new关键字创建的对象被创建到堆空间; e.g. Student *stu = new Student(); 不使用new关键字创建的对象被创建到栈空间; e.g. Student stu(); 使用new关键字创建的...
  • 第一种方式是在进程虚拟地址空间中的栈中分配内存,而第二种使用new,在堆中分配了内存,而栈中内存的分配和释放是由系统管理,而堆中内存的分配和释放必须由程序员手动释放,所以这就产生一个问题是把对象放在栈...
  • JS中使用new关键字调用构造函数实例化对象时new的作用 创建一个新的空对象 new的第二步,将当前新对象的_ proto _属性,指向当前构造函数的原型对象 用新对象调用构造函数 i. 先将构造函数内所有this指向新...
  • Springboot项目中 new 创建对象中无法使用@Resource 或@Autowired 注解实例化service层注入 那么如何引用呢,web启动类中注入 service 对象 设置为static new创建对象 类中引用,测试不可实现,以为静态变量 不...
  • 【C++】创建对象new关键字

    千次阅读 多人点赞 2018-11-04 15:20:44
    new创建对象使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高...
  • new会在内存中创建一个新的空对象 new 会让this指向这个新的对象 执行构造函数(给这个新对象添加属性和方法) new会返回这个新对象 转载于:https://www.cnblogs.com/belongs-to-qinghua/p/11352993.html...
  • 它们的区别在于创建对象的方式不一样,前者newInstance()是使用类加载机制,后者new关键字是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂....
  • 一、对象名 = new 类名(参数1,参数2...参数n);  对象名.方法(); 二、new 类名(参数1,参数2...参数n).方法;。 用一个简单的代码来说明使对象实例化的的两种写法:   package New; public class ...
  • 关键字new创建对象 new都做了什么

    千次阅读 2018-03-13 14:28:25
    function Person () { this.name = name; this.age = age; this.job = job; this.sayName = function () { return ...}var person = new Person(“tom”, 21, “WEB”);console.log(per...
  • 开辟空间,用来存储创建的新对象 把this设置为当前对象 设置属性和方法 返回当前的新对象

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 454,499
精华内容 181,799
关键字:

使用new关键字创建对象