大数据学习记录---JAVA篇---面向对象基础部分

简介: 第二部分学习面向对象相关知识,这一部分其实不太熟悉,因为也不常写,记录一些知识点,以便后续回忆。

面向对象基础知识

  • 基础部分大概围绕成员变量,成员方法,构造器三个内容
  • 基础部分的重点,是在理解面向对象的一些内存机制!

一、构造器和this关键字

1、构造器分为有参和无参,无参本身就有,但如果定义了有参,就要重新定义无参。具体定义IDEA有快捷,右键+生成里就有。
2、this关键字就是指定当前访问对象,this.xxx可以用于指定访问当前对象的成员变量和方法,有时候你定义的参数和成员变量或者方法同名的情况下就可以用this。

二、封装和javabean

1、封装就是面向对象的三大特性之一,就记得在定义一个对象类的时候,其对应的方法要写在这个类中!可以避免有时候不清楚方法应该在哪定义。
2、javabean就是一些个实体类,在定义这些类的时候,成员变量设为private,同时提供专门的getter和setter的方法,给外面修改变量值。还有必须提供无参构造器,有参可写可不写,写了就一定要补无参。

三、成员变量(类中定义)与局部变量(方法中定义)的区别!

image.png
image.png

四、面向对象内存机制(理解方法区、堆内存、栈内存)!

image.png
只需要明白,实例化一个对象后,对象是和当前方法一起定义在栈内存里的,而对象的成员变量的信息存储在堆内存中,栈内存里存放指向对应堆内存中的地址,而成员的方法还是放在方法区里,堆内存里会记录对应方法的地址信息,也就是调用的时候,从栈内存到堆内存再到方法区。
image.png
JAVA不需要像C++一样释放内存空间,存在垃圾回收机器,定时清理堆内存里没有东西指向的一些信息。
image.png

五、String类和ArrayList类

  • JAVA中提供的可以直接用的非常常见的两种类
  • 简单记录一些可能会忘的东西看,具体在使用中再去查api文档和一些对应方法

String类

1、定义的两种方式,及其内存空间分配的区别
a、直接以""方式初始化定义,会把字符串存在堆内存的字符串常量池中,栈内存中对象存在指向常量池的地址。
image.png

b、用构造器来初始化,这种方法就是和上面说的对象的定义内存分配一致,会直接在堆内存中存储。
image.png
如图,用构造器来定义,即使内容一样,存储空间也是不一样的,因为是开辟了一个新的变量空间
2、String类的一些常用api
image.png
首先是对比两个字符串是否相等不能用==,因为两个字符串的对象里存放的是地址而不是它们的值,==会去比较地址是否指向同一个地方,而不是内容是否相等,这个在python中也有遇到。
image.png

ArrayList类(Python中的list,C++中的vector)

1、构造方式
a、首先用构造器定义,同时可以加上泛型去固定存储类型(<>这个在写C++的时候也遇到过)

 ArrayList<Double> nums = new ArrayList<>(); // java.lang中包装了基本数据类型的面向对象的class形式

image.png

b、泛型不能是基本数据类型,java.lang中提供了基本数据类型的面向对象形式0的包装
2、常用的api和使用方式
a、用add来添加数据,注意String和ArrayList都不能像数组那样按索引读写数,都要用特定的api来操作。
image.png
3、ArrayList的内存机制
image.png
因为ArrayList中存的还是一些对象,所以指向的位置存放的还是地址,如图

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
3天前
|
Java
Java面向对象实践小结(含面试题)(下)
Java面向对象实践小结(含面试题)(下)
13 1
|
2天前
|
存储 Java 开发工具
【Java探索之旅】用面向对象的思维构建程序世界
【Java探索之旅】用面向对象的思维构建程序世界
9 0
|
2天前
|
Java
java使用面向对象实现图书管理系统
java使用面向对象实现图书管理系统
|
2天前
|
Java
Java语言---面向对象的三大特征之继承
Java语言---面向对象的三大特征之继承
|
2天前
|
机器学习/深度学习 Java Python
Java面向对象知识体系---基础版
Java面向对象知识体系---基础版
|
3天前
|
安全 Java 编译器
Java面向对象思想以及原理以及内存图解(下)
Java面向对象思想以及原理以及内存图解(下)
11 0
|
3天前
|
Java
Java面向对象思想以及原理以及内存图解(上)
Java面向对象思想以及原理以及内存图解
14 0
|
3天前
|
设计模式 Java
Java面向对象实践小结(含面试题)(上)
Java面向对象实践小结(含面试题)
12 1
|
4天前
|
Java 大数据 Go
Go vs Java:在大数据处理领域的性能对比
Go与Java在大数据处理中各有特点。Go启动快,内存占用少,静态类型及并发模型(goroutine和channel)使其在并发性能上有优势。Java虽然启动慢,JVM内存占用高,但拥有丰富的生态系统和并发工具。代码示例展示了Go的goroutine和Java的线程池处理大数据的场景。在性能上,Go可能更优,但Java的跨平台性和生态广度使其仍被广泛应用。
|
7天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类

热门文章

最新文章