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是有点小区别的。

相关文章
|
7月前
|
JSON 监控 算法
员工上网行为监控:利用Scala编写数据处理和分析算法
企业在数字化时代利用Scala进行员工上网行为监控,以确保合规和网络安全。通过Scala的数据处理和分析能力,读取CSV日志数据转换为DataFrame,分析员工行为,如统计最常访问网站。此外,还展示了将监控数据以JSON格式提交至公司网站的函数,实现实时信息更新与安全防护。
141 5
|
7月前
|
Java 大数据 Scala
Scala入门【运算符和流程控制】
Scala入门【运算符和流程控制】
|
7月前
|
数据采集 人工智能 数据可视化
Scala多线程爬虫程序的数据可视化与分析实践
Scala多线程爬虫程序的数据可视化与分析实践
|
4月前
|
数据采集 存储 NoSQL
建筑业数据挖掘:Scala爬虫在大数据分析中的作用
建筑业数据挖掘:Scala爬虫在大数据分析中的作用
|
7月前
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
164 1
|
7月前
|
数据采集 监控 安全
通过Scala实现局域网监控上网记录分析:函数式编程的优雅之路
在当今数字时代,网络监控成为保障信息安全的必要手段之一。本文将介绍如何使用Scala编程语言实现局域网监控上网记录分析的功能,重点探讨函数式编程的优雅之路。通过一系列代码示例,我们将展示如何利用Scala的函数式特性和强大的语法来实现高效的监控和分析系统。
256 1
|
Scala
164 Scala 对象
164 Scala 对象
29 0
|
设计模式 Ubuntu Java
|
分布式计算 Java 大数据
|
Java Scala
scala面向对象编程之类与对象
scala是支持面向对象的,也有类和对象的概念。 示例:定义一个User类,并添加成员变量/成员方法,创建一个Main object,添加一个main方法,并创建Customer类的对象,并给对象赋值,打印对象中的成员,调用成员方法
116 0
scala面向对象编程之类与对象