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中集合框架

要点:

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

java框架概念_java概念(2)相关推荐

  1. java框架知识_java框架知识点总结

    java框架知识点总结 面对Java丰富的知识资料,很多初学者难免觉得迷惘,下面是小编为大家整理的java框架知识点总结,欢迎参考~ 1 对象的初始化 (1) 非静态对象的初始化在创建对象时,对象所在 ...

  2. java框架白话_Java NIO框架Netty教程(二) 白话概念

    "Hello World"的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什.方便自己以后更灵活的使用和扩展. 声明,笔者 ...

  3. java 框架 直播_java如何实现秀场直播功能?基于即构SDK开发

    目前,直播市场一片火热,直播已经广泛应用于娱乐.会议.培训.商演等活动中,给各行业带来了不少经济效益.不过当下很多商家平台并没有直播经验,也不知道如何搭建直播间,比如最近有一位朋友咨询我,如何用jav ...

  4. java框架选择题_JAVA三大框架测试题.doc

    框架阶段测试卷 选择题(共50题,每题2分,满分100分) 1.选出不是Restrictions方法的选项(D ). A.eq() B.gt() C.like() D.isNULL() 2.已知系统中 ...

  5. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

  6. java的程序概念_Java程序基本概念

    大家好,在这里跟大家讲解一下关于Java程序的基本概念应用. 以下本人的介绍包括有以下的几点: 一.标识符的定义 二.数据类型的划分 三.运算符的应用 四.分支结构.循环结构.循环控制语法的应用 五. ...

  7. JUC锁-框架与基本概念(一)

    框架与基本概念 在了解后面的内容之前,必须要先了解基本概念: AQS – 指AbstractQueuedSynchronizer类. AQS是java中管理"锁"的抽象类,锁的许多 ...

  8. java框架的利与弊_Java编程的利与弊

    java框架的利与弊 没有什么技术可以吹嘘保持相关性超过20年了. 但是今年,Java被评选为第五大最受欢迎的技术 ,仅被无可争议的领先者JavaScript,HTML,CSS和SQL所超越. 尽管在 ...

  9. 区分 JVM 内存结构、 Java 内存模型 以及 Java 对象模型 三个概念

    本文由 简悦 SimpRead 转码, 原文地址 https://www.toutiao.com/i6732361325244056072/ 作者:Hollis 来源:公众号Hollis Java 作 ...

最新文章

  1. 如何将全景分割用到养猪场?
  2. for 循环迭代变量
  3. 俞敏洪在北大2008年开学典礼上的演讲
  4. vs2010 问题 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  5. 手机轮廓光怎么拍_摄影技巧:怎么拍影子?手机拍照教程
  6. P2446 [SDOI2010]大陆争霸
  7. BZOJ3427 Poi2013 Bytecomputer
  8. 95-280-036-源码-资源管理-计算资源管理-TaskSlot-TaskExecutor 中 Slot 的管理
  9. linux 开机默认启动windows系统时间,Windows和Linux双系统批改默认启动项、超时时间...
  10. 详解Nginx的功能策略配置
  11. python最大公约数计算。从键盘接收两个整数_python如何求解两数的最大公约数
  12. springboot 集成 freemarker
  13. Atitit. 单点登录sso 的解决方案 总结
  14. 浅蓝色学校网站模板_学校网站源码_适用高中,中学,小学学校网站建设
  15. DIGITS安装和配置
  16. 从零开始SpringCloud Alibaba实战(47)——阿里开发手册泰山版学习笔记一 命名风格
  17. FATAL Exited too quickly (process log may have details)
  18. 软件工程 3:模块化设计
  19. 谷歌浏览器将在2023年2月7日起停止支持Windows 7和8.1版
  20. ios13如何隐藏第三方应用(苹果ios13怎么隐藏个别软件)

热门文章

  1. FreeSql (二十二)Dto 映射查询
  2. Windows下gmssl使用记录
  3. hibernate基础工具findBySQL学习
  4. Linq 合并数据并相加
  5. 浅谈Java中的hashcode方法
  6. Cortex-M3 动态加载一(地址无关代码实现)
  7. FxCAD 实验三 实现对象的【属性】事件
  8. chrome中Google插件导出导入
  9. 关于明晚即将发布的新款 iPad Pro,最大的亮点也许不是 Face ID
  10. 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...