栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

国庆七天后的自我救赎:

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

国庆七天后的自我救赎:

一、反射: 1、创建对象四种方式:

①直接new ②Object类的clone()返回复制对象 ③反序列化readObject() ④反射的newInstance()

2、反射创建对象:

Class cls = Class.forName(完全限定名)
①无参:Object o = cls.newInstance() 或者Constructor c = cls.getConstructor();Object o = c.newInstance()
②有参:Constructor c = cls.getConstructor(参数列表); Object o = c.newInstance()
③构造器组:Constructor c[] = cls.getConstructors(); 遍历数组

3、反射调用方法:

①公开的:Method m = cls.getMethod(方法名,参数类); m.invoke(o);
②私有的:Method m = cls.getDeclaredMethod(方法名,参数类); m.setAccessible(true); m.invoke(o);
③本类+父类非私有组:Method m[] = cls.getMethods();
④本类包括私有组:Method m[] = cls.getDeclaredMethods();

4、反射调用属性:

①公开的:Field f = cls.getField(属性名); 设置f.set(对象,值); 获取f.get(对象);
②私有的:Field f = cls.getDeclaredField(属性名); 权限f.setAccessible(true); 设置f.set(对象,值); 获取f.get(对象);

二、Collection集合 1、Collection和Collections区别:

Collection是集合类的顶级接口,提供了对集合对象操作的基本方法。直接继承接口有Set和List
Collections是包装类,是集合的工具类,提供集合的排序、搜索、线程安全等操作。无法实例化。

2、迭代器,for,增强for,forEach区别:

①Iterator语法:iterator()返回一个Iterator的实现类。只能遍历集合,不能增删。
②for语法:for(初始条件;循环条件;迭代因子){方法体},只能遍历数组,随意增删。
③增强for语法:for(元素类型 变量名:集合),语法糖,遍历集合底层是迭代器,遍历数组底层是for,不能增删。
④forEach():集合的方法,可使用lambda表达式遍历集合。多线程并发安全,可以增删。

3、集合数组互转:

①集合到数组:Collections.toArray()
②数组到集合:Arrays.asList(),通过集合转换而来的数组,对该集合元素操作就是对原数组的操作。

三、集合子接口之List链表 1、List的排序:

①实现Comparable接口,其中compareTo方法能满足需求的:调用Collections.sort()
②实现Comparable接口但不满足的:重载sort,传入临时比较规则
②没实现的:Comparator比较器接口,调用Collections.sort()匿名实现类,重写compare()定义规则

2、ArrayList底层容量:

JDK6直接创建容量10数组,JDK8创建空数组,第一次插入才分配10个对象空间,超过10个就*1.5

3、linkedList搜索机制:

二分法。传入索引值与集合size()/2比较,大于则从最后一个找,小于则从第一个找

四、集合子接口之Queue

1、Queue:单向队列,先进先出FIFO,出poll入offer
2、Deque:双向队列,两端都可出入队,头First尾Last
3、Stack:栈结构,先进后出FILO,出pop入push

五、Map查找表: 1、遍历Map三种方式:

①遍历key:ketSet() 返回Set集合
②遍历键值对:entrySet(),返回Set集合
③遍历value:values(),返回Collection集合

2、HashMap容量:

初始化时没有指定容量,则返回一个空table数组。第一次put键值对,初始化长度为16;
达到加载因子0.75时,扩容为原来的二倍

3、HashMap存储:

底层是一个Entry数组。存放元素时,首先会根据key的hashCode值找到数据应该保存在table数组的下标位置。
如果数组位置上没有数据,则保存。如果有,则比较key的equals,如果true,则value值被覆盖。
如果false,则采用链地址法,把新的键值对对象保存到旧的键值对对象的next变量中,形成单向链表结构。
当数组长度>64链表长度>8,转换为红黑树。当树长度<6,转回链表。

4、HashMap查找:

查找数据时,首先会根据key的hashCode值找到对应下标,如果这个位置上什么都没有,返回null。
如果有键值对对象,且equals比较为true,直接返回value。
如果有单向链表,则用key比较链表上每个节点的value,直到相等返回vlue。
如果没有一个是相等,则返回null。

六、树结构: 1、红黑树要求:

①节点是红色或者黑色。
②根节点是黑色。
③所有叶子结点都是黑色。
④每个红色节点的两个子节点都是黑色。
④从根节点到任意叶子结点的所有路径上黑色节点数量相同。

2、红黑树三大基本操作:

左旋、右旋、着色

七、HashSet: 1、HashSet底层:

底层是HashMap,利用了key不能重复的特性,直接将要存储的元素作为key存储到了HashMap中。

八、注解: 1、三大注解:

①jdk注解:jdk提供的5个,比如@Override
②元注解:修饰注解的注解,常用来自定义注解,比如@Target指定位置,@Retention生命周期
③自定义注解

九、XML 1、解析方式:

①DOM:文档对象模型,官方推荐标准,无关语言平台。将xml的内容以树的形式一次性加载到内存,可随机访问修改。但效率低,内存成本高。
②SAX:简单应用程序接口,以事件为驱动,需要哪些数据解析哪些,效率快,但不会将内容加载到内存,不方便,增加程序负担。
③JDOM:java平台使用的,简单高效,但也要加载整个文档,对内存要求高。
④DOM4J:java的xml的API,类似于JDOM,性能优异、功能强大、简单易用,且开源。是目前最流行、最好用的XML解析工具,解析XML速度最快。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号