scala 对象创建的流程分析|学习笔记

简介: 快速学习 scala 对象创建的流程分析。

开发者学堂课程【Scala 核心编程-基础scala 对象创建的流程分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8952


scala 对象创建的流程分析

 

目录:

一、案例

二、流程分析

三、总结

 

一、案例

看一个案例

class Person {

var age: Short = 90

var name: String=_

def this(n: String, a: Int){

this()

this.name =n

this.age =a

}

}

var p:Person = new Person(小倩”,20)

案例说明:

以这个案例为例,有个 Person,Person 中有两个属性,然后里面还有一个辅助构造器,这个辅助构造器按照原先写的规则也是正确的编写的,假如 new 了一个对象小倩,给了她20岁。那这个时候显然调用的是辅助构造器。

 

二、流程分析

1、加载类的信息(属性信息,方法信息)

加载类的信息就是加载属性信息和方法信息,这个会把它加载到方法区。

2、在内存中(堆)开辟空间

空间开多大取决于属性多大,所以说在定义内存属性的时候是要注意的,能够用小数据就不用大数据,比如说年龄用Int 就可以了,用 short 也完全够了。假设用大数据对象很多,有一千万个对象,有一个属性节省了2个指针,一千万个对象就节省了两千万个指针。只把数据类型按照严格的优化。

3、使用父类的构造器(主和辅助)进行初始化

父类中也是调用父类的主构造器。

4、使用主构造器对属性进行初始化【age:90, name null】

5、使用辅助构造器对属性进行初始化 【age:20, name小倩】

这点跟 JAVA 是有所区别的,JAVA它在进行初始化的时候,完全没有主和副的概念,构造地位都是一样的。根据辅助构造器相当于把 a 和 n 给它了,所以年龄变成20,name 变成小倩

6、将开辟的对象的地址赋给p这个引用

赋值运算是从右向左,这个时候把对象的地址赋给 p 这个引用。

 

三、总结

如果有面试官问到,一定要强调有主构造器和父构造器,同时要提到父构造器和主构造器的构建过程,跟java是有点小区别的。

相关文章
|
5月前
|
Java 大数据 Scala
Scala入门【运算符和流程控制】
Scala入门【运算符和流程控制】
|
5月前
|
数据采集 人工智能 数据可视化
Scala多线程爬虫程序的数据可视化与分析实践
Scala多线程爬虫程序的数据可视化与分析实践
|
5月前
|
数据采集 监控 安全
通过Scala实现局域网监控上网记录分析:函数式编程的优雅之路
在当今数字时代,网络监控成为保障信息安全的必要手段之一。本文将介绍如何使用Scala编程语言实现局域网监控上网记录分析的功能,重点探讨函数式编程的优雅之路。通过一系列代码示例,我们将展示如何利用Scala的函数式特性和强大的语法来实现高效的监控和分析系统。
220 1
|
分布式计算 监控 Hadoop
日志分析实战之清洗日志小实例1:使用spark&Scala分析Apache日志
日志分析实战之清洗日志小实例1:使用spark&Scala分析Apache日志
261 0
日志分析实战之清洗日志小实例1:使用spark&Scala分析Apache日志
|
Java Scala 开发者
Scala 下界介绍和应用实例 | 学习笔记
快速学习 Scala 下界介绍和应用实例
91 0
Scala 下界介绍和应用实例 | 学习笔记
|
Scala 开发者
Scala 上界介绍和应用实例2 | 学习笔记
快速学习Scala上界介绍和应用实例2
72 0
Scala 上界介绍和应用实例2 | 学习笔记
|
Java Scala 开发者
Scala 泛型介绍和应用实例2 | 学习笔记
快速学习 Scala 泛型介绍和应用实例2
58 0
Scala 泛型介绍和应用实例2 | 学习笔记
|
Scala 开发者 索引
关联 Scala 源码|学习笔记
快速学习关联 Scala 源码。
180 0
|
Java Scala 开发者
Windows 搭建S cala 开发环境|学习笔记
快速学习 Windows 搭建 Scala 开发环境。
150 0
Windows 搭建S cala 开发环境|学习笔记
|
大数据 Java 编译器
Scala 字符类型|学习笔记
快速学习 Scala 字符类型。
147 0