java框架概念_java概念(2)

java概念(2)

重载和重写

重载:同一个类中,方法名相同,参数不同

重写:父子类中,子类重新定义父类的方法

多态

​ 多态:同一种行为,不同的对象有不同的表现形式。

​ 重载 编译时根据参数决定调用的方法,即编译时的多态性。

​ 重写 运行时根据对象类型调用子类方法,即运行时的多态性。

优点:子类可以重写,提高了重用性

接口和抽象类的区别

抽象类

使用abstract修饰;

不能使用new来实例化对象;

抽象类不一定包含抽象方法,可以有具体的方法;

接口

使用interface修饰;

接口不能被实例化;

一个类只能继承一个类,但可以实现多个接口;

接口中方法均为抽象方法;

接口中不能包含实例域或静态方法。

注意:抽象类主要做父类,提供公共的属性和方法,便与重用。

接口提供一种规范,目的是降低耦合,比抽象类 抽象程度更高。

序列化 ?

序列化: 把对象转换为字节序列 保存到流 。

实现方式:

(1) 将 被 序 列 化 的 类 实 现Serializable 接口 进行标识。

class Student implements Serializable{}

(2)使用流进行读/写

ObjectOutputStream objectStream=new ObjectOutputStream(

new FileOutputStream(new File(“d:\student.txt”));

objectStream.writeObject(objectStream);

objectStream.close();

(3) 反序列化: 将字节序列恢复为对象 。

ObjectInputStream objectStream=new ObjectInputStream(

​ new FileInputStream(new File(“d:\student.txt”)));

​ Studentstudent=(Student)objectStream.readObject();

5.Java中集合框架

1da1c264882af4284093abe86709fd7c.png

ff20ae73d7a218850cb440e40226f2bd.png

要点:

Java集合类由两个接口派生:Collection和Map

Collection分两大部分:List和Set

List,Queue是Java提供的队列实现

Map是映射接口,每个元素都是一个key-value键值对

Set、List、Map 集合,最常用 HashSet、ArrayList、HashMap

List、Map、Set 区别

List:有序、可重复 集合,集合中每个元素都有 对应顺序索引。

​ List 默认按元素添加顺序 设置元素的索引,可以通过索引来访问指定位置元素。

​ List接口集合:ArrayList、LinkedList、Vector、Stack。

Set接口不允许重复

​ 常用实现类有HashSet、LinkedHashSet和TreeSet。

Map接口采用键值对Map的存储方式,保存具有映射关系的数据,

​ key值不允许重复,可以为null。如果已经有重复的key,则新的value会覆盖该key原来对应的value。

​ 常用实现类有HashMap、LinkedHashMap、TreeMap等。

7. HashMap 和 HashTable 有什么区别?

要点:

HashMap与Hashtable是Map接口的两个典型实现。都是采用了hash表数据结构来实现,可以快速定位元素。存储时,根据key的哈希值决定元素存放的位置。

HashMap继承自AbstractMap类。实现了Map接口。

Hashtable继承自Dictionary类,Dictionary类是一个已经被废弃的类。父类已经不推荐使用,因此它的子类Hashtable也很少用了。

Hashtable是JDK1.0引入的,是线程安全的,适用于多线程环境

HashMap是JDK1.2引入的,非线程安全的,适用于单线程环境。不保证存取的顺序性的,也就是说遍历HashMap的时候,得到的元素的顺序与添加元素的顺序是不同的。

HashMap是允许key和value为null值的,只能有一个key为null。它用containsValue和containsKey方法判断是否包含对应键值对;

HashTable键值对都不能为空,否则包空指针异常。

8 .Java 中 ArrayList 和 LinkedList 以及Vector的区别?

要点:

ArrayList是一个动态数组Object[],是List类的典型实现。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。

ArrayList擅长于随机访问。同时ArrayList是非同步的。

LinkedList是List接口的另一个实现,除了可以根据索引访问集合元素外,LinkedList还实现了Deque接口,可以当作双端队列来使用,也就是说,既可以当作“栈”使用,又可以当作队列使用。

LinkedList的实现机制与ArrayList的实现机制完全不同,ArrayLiat内部以数组的形式保存集合的元素,所以随机访问集合元素有较好的性能;LinkedList内部以链表的形式保存集合中的元素,所以随机访问集合中的元素性能较差,但在插入删除元素时有较好的性能。

Vector与ArrayList相似,但是Vector是线程同步的。所以说Vector是线程安全的动态数组。它的操作与ArrayList几乎一样。

9.HashSet是如何保证数据不可重复的?

要点:

HashSet的底层其实就是HashMap,只是HashSet是实现了Set接口并且把数据作为Key值,而value值一直使用一个相同的虚值来保存.由于HashMap的Key值本身就不允许重复,并且在HashMap中如果Key/value相同时,会用新的Value覆盖掉旧的Value,然后返回旧的Value,内部执行终会返回一个false,导致插入失败,这样就保证了数据的不可重复性.

10.Collection和Collections区别

要点:

​ Collection是集合的顶层结构,提供了集合的公共操作的规范

Collections是一个静态的工具类,提供了集合常见的操作实现,比如排序,搜索,反序等,简化开发中常见的功能。

void reverse(List list)//反转

void shuffle(List list)//随机排序

void sort(List list)//按自然排序的升序排序

void sort(List list, Comparator c)//定制排序

void swap(List list, int i , int j)//交换两个索引位置的元素

void rotate(List list, int distance)//旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面

int binarySearch(List list, Object key)//对List进行二分查找

int max(Collection coll)//根据元素的自然顺序,返回最大的元素。

int max(Collection coll, Comparator c)//根据定制排序,返回最大元素,

void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。

int frequency(Collection c, Object o)//统计元素出现次数

int indexOfSubList(List list, List target)

//统计target在list中第一次出现的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

元素。

int frequency(Collection c, Object o)//统计元素出现次数

int indexOfSubList(List list, List target)

//统计target在list中第一次出现的索引

boolean replaceAll(List list, Object oldVal, Object newVal)

//用新元素替换旧元素

标签:java,HashMap,List,ArrayList,元素,list,接口,概念

来源: https://blog.csdn.net/weixin_48407105/article/details/113801842

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS(八)--crontab命令的使用方法

crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。 在Linux系统中,Linux任务调度的工作主要分为以下两类&…

有健忘症吗?

今天兴高采烈,早上空气不错, 但是骑自行车的我,还是得戴一个面罩。 半个小时后买了早餐, 一份炒粉、一豆浆,今天早上豆浆没有掉地上, 但是~~~~~~~~~~~~~~shit~~!~!~,居然忘记带要换的衣服了, …

下载java后缀的文件闪退_关于jarfile 打开闪退问题

后面才发现,原来是因为我把文件拖入了新建的文件夹,改变了路径,而且我的java环境没有配置好是全局变量,所以新建文件夹之后,就会出现找不到了路径,闪退的问题,,,还有就是…

java怎样写入五个人的成绩_用java输入5个学员姓名和分数,显示分数最高的学员姓名和分数?...

展开全部import java.util.Scanner;public class Student {private String stuname "";private float stuscore 0;public String getStuname() {e69da5e6ba9062616964757a686964616f31333335316633return stuname;}public void setStuname(String stuname) {this.s…

iOS 10 升级后无法真机测试 Could not find Developer Disk Image

---2016年9月20日更新 iOS 升级到10之后,你会发现无法进行真机测试了。这种情况我在iOS 8.4 、9.3更新的时候也遇到过。原因是Xcode 的DeviceSupport里面缺少了iOS 10的SDK。所以你可以选择将Xcode更新到最新版本就可以了&#xf…

java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择

JAVA虚拟机JVM优化重要性,昨天JAVA虚拟机JVM参数优化(1)文章中已经描述,今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法。JVM内部结构如下图所示:串行收集用于单个线程执行垃圾收集的情况,在这种情况下相对它…

Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

2019独角兽企业重金招聘Python工程师标准>>> 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的…

java clicked_关于java:JComponents在调用mouseClicked()之后消失

我正在用Swing编写Java GUI程序。该界面如下所示:当用户单击右侧的图片之一时,我希望它的一个小的预览显示在左上角的橙色区域中。我通过SwingWorker线程从计算机上的目录中提取所有图像文件。在SwingWorker的done()方法中,我向每个对象添加了…

vim简单命令教程-firstblood

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。 Vim the Six Billion Dollar editor Better, Stronger, Faster. 学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文…

第三课、Qt的诞生和本质------------------狄泰软件学院

一、GUI用户界面元素 (1)、GUI应用程序是由固定的窗口元素所构成 (2)、操作系统提供了创建用户界面元素所需要的函数 (3)、各自功能不同的函数依次调用,从而创建出界面元素 (4&#…

Spark RDD算子介绍

Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。 Spark是MapReduc…

java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!

作者 | 中华石杉责编 | 伍杏玲本文经授权转载石杉的架构笔记(ID:shishan100)这篇文章我们来看看,世界上最优秀的分布式文件系统HDFS,是如何对超大文件的上传做性能优化的?首先,我们还是通过一张图来看一下文件上传的大…

CentOS7下安装Redis — 单节点

2019独角兽企业重金招聘Python工程师标准>>> 1. 环境准备 安装编译所需要的包: yum install gcc tcl 2. 下载redis http://download.redis.io/releases/redis-3.2.7.tar.gz 3. 安装redis ## 创建redis的安装目录 mkdir /usr/local/redis## 解压redis tar…

笔记本中美化代码的方法

这里向大家推荐一个很好用的记笔记软件,微软的OneNote,这个笔记软件,支持分区和分区组的创建,而且入门简单,界面简洁,很适合从word过渡过来的人来记笔记! 不过如果直接记笔记,对于程序员来说,可能希望代码在笔记本上更好看一些,那么应该怎么办呢?下面提供了在OneNote中,让代码…

工具使用——印象(汇总)

作者:桂。 时间:2017-02-09 23:11:30 链接:http://www.cnblogs.com/xingshansi/articles/6384097.html 说明:转载请注明出处,谢谢。 前言 本文仅仅介绍印象笔记的使用,至于挖掘机哪家强,本文不…

深入理解Python的logging模块:从基础到高级

在Python编程中,日志记录是一种重要的调试和错误追踪工具。Python的logging模块提供了一种灵活的框架,用于发出日志消息,这些消息可以被发送到各种输出源,如控制台、文件、HTTP GET/POST位置等。本文将深入探讨Python的logging模块…

centos7安装java6_CentOS7.6安装jdk1.8

2、登录Linux服务器,通过rz命令将jdk导入服务器如果没有rz命令 需要先安装lrzszyum install lrzsz -y3、将jdk压缩包解压到指定路径 -C 指定路径4、配置环境变量编辑/etc/profile文件 在末尾加上以下内容 wq保存退出source /etc/profile文件 使配置文件生效export J…

人生苦短,我用python——当我在玩python的时候我玩些什么 -

程序的基本思路 用一个txt文件记录电脑的一天内累计使用时间累计使用时间超过若干小时就会自动关机程序开机自动运行 为什么我最后选择了python 想着怎么写、搜资料的时候就发现Java并不适合,虽然不是不能实现,但有好几个问题解决起来都有点麻烦。对我这…

Twisted入门教程(5)

2019独角兽企业重金招聘Python工程师标准>>> 第五部分:由Twited支持的诗歌下载服务客户端 你可以从这里从头开始阅读这个系列 抽象地构建客户端 在第四部分中,我们构建了第一个使用Twisted的客户端。它确实能很好地工作,但仍有提高…

**print('人生苦短 我爱Python')**

print(‘人生苦短 我爱Python’) 一、变量 **""" 1.代码自上而下执行 2_运算符和表达式.一行一句,不要把多个语句写到一行上,可读性不好 3中文只能出现在引号里,其他地方不能出现中文 4不能随意缩进 """**pr…