XShell 网站favicon图标制作 Scala 全局重载运算符 bootstrap Java程序员 database flash reflection jtable git视频 node卸载命令 jquery拼接字符串 ie内核浏览器怎么设置 java清空数组 java接收数组 java创建字符串数组 数据库教程 python参考手册 python的re模块 python文件读取 python零基础 java字符串 java的基本类型 java获取当前年月 java数组最大值 java开发语言 怎么装linux系统 网络电视软件下载 ps校正倾斜照片 eclipse中文版下载 滑动门代码 七宗罪游戏下载 视频加文字用什么软件 正当防卫4存档 vbs代码 appdata是什么文件夹 羽化快捷键 卧龙推广 重复文件查找
当前位置: 首页 > 学习教程  > 编程语言

java概念(2)

2021/2/13 16:34:34 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

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

图片

图片

要点:

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<K,V>的存储方式,保存具有映射关系的数据,

​ 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)

//用新元素替换旧元素 

本文链接: http://www.dtmao.cc/news_show_700057.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?