java复习-高频技术及应用场景

java复习
摘要由CSDN通过智能技术生成

0 前言

鄙人对java语言,实话说,不是很感冒。比如解决一个问题,笔者的行为流程一般是这样的:
解决问题模型

有了这个,你再跟我说什么封装,继承,多态,这显然一下子限制妨碍了笔者的想象力。另一方面,这几年做开发,有些方面囫囵吞枣,有些方面理解不透彻。温故而知新,因此,本人按照正常做事的思维,去复习回顾下之前用的高频java技术。

总体的复习结构如图:
java复习-高频特性及应用场景

1 语言特性

1.1 封装

封装可以用隐藏,模块化,组件化来理解。虽然A同事写了一大堆代码,但是我不想知道代码的细节,我只想知道怎么调用这段代码。

1.1.1 对象创建

一个对象的创建,必须经历声明->创建->初始化 3个步骤。

1.1.2 对象内存分配和引用

对象的创建,同时在内存中给予其分配一块内存,使用索引可访问该内存的地址。在java的语言设计中,为了内存的高效使用,在内存分配上,会使用“引用“的概念。这个概念类似C语言的指针。

比如,在对象clone上,深clone,会clone该对象引用指向的所有对象。

1.2 继承

继承有点类似于”沿用“一词,你做了什么,我沿用你的套路;如果我的情况不一样,我可以做些部分更改。在归纳”对象集合“的时候,比如归纳狗的时候,需要梳理狗的种类,皮毛颜色,三围,原产地,先总结一些公共特征,然后子类沿用公共特征,这样可以简化描述对象的难度。

1.3.1 重载和重写

1.3 多态

”多态“这个词字面上不好理解。它实际描述的是”行为“,即”Action“,或者”DO-WHAT“。
表述就是某一对象的不同行为;多个对象的多种行为。

1.4 抽象

抽象就是抽象。也是简化描述现实的常用思想。

2 集合

2.1 Array

数组不属于集合的划分。由于本人用的高频,而且数组内涵蛮丰富的,所以就放在这里。
(1)集合特点

集合关注点一般有几个主要特点:

  1. 有序,无序;
  2. 速度快慢;
  3. 安全性。

抽象理论不提,一般应用主要根据数据特点。
1 一般有序数据的应用较多。有序集合,大多是List。

List,根据生成数据方式,分为,ArrayList 和LinkedList

2 另一个是无序数据,这类数据,分为2类,一类为带标记,一类为纯无序。

纯无序,因其数据特点,互联网端见的较少,一般用HashSet,因为相同的元素具有相同的hashCode,不能有重复元素。

带标记的,通常用HashMap,是一种用键值对存储的数据存储方式。还有一种树型数据结构,TreeSet,暂不提。

日常人们数据交互中,有几项常见交互模式:

  1. 增删改查
  2. 排序
  3. 线性关系
  4. 非线性关系

似乎没有通用的数据结构

对于集合的快慢,这里重点复习下hashCode。

hashCode是通过一种算法生成的编码。hashCode 编码可用于对象在内存中地址位置。

安全性方面,主要是线程安全。速度快的,都是线程不安全的。这部分比较复杂,不提。

(2)hashCode的应用笔记

hashMap由于采用hashCode分配内存思路,时间复杂度为O(n),所以速度很快。

在判断对象重复时,有2个步骤:

  1. 通过hashCode定位内存地址,地址是空的,则没有重复;
  2. 如果地址非空,调用它的equals方法与新元素进行比较。

这里面又涉及了判断方法等细节。常见的判断方法有:==、equals()、hashCode()。

三者的具体解析,参见:

https://www.cnblogs.com/xudong-bupt/p/3960177.html

总结就是:

  1. ==是比较两个对象在JVM中的地址,地址相同,则对象相同。
  2. 根类Obeject中的方法equals,直接调用==,比较对象地址;string中的equals,先比较地址,如果不同,挨个比较两个字符串对象内的字符。
  3. 根类Obeject中的方法hashCode,返回对象的32位jvm内存地址。hashCode跟equals有联动关系,重写时,务求
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值