读书笔记-容器、泛型及反射

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:             本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!        在Java中,对象的封装非常常见,今天我们可以聊下容器和泛型的问题,对对象进行更深入一点的研究。



            本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!


        在Java中,对象的封装非常常见,今天我们可以聊下容器和泛型的问题,对对象进行更深入一点的研究。


        常见窗口有Set、Queue、Map,也称为集合类,属于Collection。ArrayList属于一个“可以自动扩充自身尺寸的数组“,LinkedList具有List接口中未包含的额外方法,而TreeMap与Map也同样。Arrays.asList方法可以将一个数组或逗号分隔的元素转换成一个List对象;Queue(FIFO)只允许一端入一端出;ArrayList和LinkedList也是根据插入顺序来保存数据的,不同之处在于某些操作的性能;Set类型中,如果TreeSet可以保存顺序,且升序,LinkedHashSet按存储顺序保存,都不允许保存重复数据。


         前边博文我们已经说过,LinkedList的增、删、改比较快,但ArrayList的查找比较快速,所以多的还是用后者。容器中有个很好用的东西,叫迭代器,主要用来遍历对象。LinkedList添加了将其作为栈、队列、双端队列使用的方法。Stack,压入弹出在保存Activity的状态时会经常用到。PriorityQueue描述最典型的队列规则,默认排序,每次弹出最优先元素。


        HashMap设计用来快速访问,而TreeMap保持”键“始终处于排序状态,LinkedHashMap保持元素插入的顺序,但也通过散列提供快速访问的能力。LinkedHashSet按插入顺序保存元素。


        异常特色,重发throw e,可以抛给上一升环境中的异常处理程序。如果try...catch...finally...try中有return,finall中也有return ,那么会先执行finally再执行try后的return。


        字符串,对一个字符串操作后就生成新的串,有新的引用和对象地址。StringBuilder与StringBuffer相比,前者从始至终都是一个对象,但后者每经一个循环便产生一个新的对象;后者实现同步,线程安全,当然开销也要大些。pritnf("Row 1: [%d %f]",1,2.0f) ,%d 代表一整数,%f表示一浮点数,当然也可以将printf换成System.out.format,说到这里要讲到URLEncoder和URLDecoder分别可以将汉字转成浏览器识别汉字,和将浏览器改变的汉字还原。正则常见:\d,数字;\w 字母 ^表示开始 $表示结束,dw大写表示非,?表示一个字符,+表示多个。


         类型信息,Java通过RTTI(Runtimer type information)和反射来识别对象类型信息,识别包含三个步骤:1、加载,classloader加载类的class文件;2、链接,验证类中字节码,解析类引用;3、初始化,执行静态数据和构造器的初始化模块。

类.class.newInstance可以初始化一个对象,instanceof用来判断对象类型.Class与java.lang.reflect使用Field、Method、Constructor分别来表示字段、方法、构造器对象。

        泛型是使用擦除实现的,List<String>和List<Integer>其实是同一个对象。超类通配符<? super MyClass> 或才<? super T>指定特定类的基类。

         数组是一种效率最高的存储和随机访问对象引用序列的方式。概念:标识符指向保存对象的地址,是引用;length表示数组大小,并不是实际保存元素的个数;数值默认值为0,布尔默认值为false;对一组数据用Arrays操作,一般采用Arrsys.toString,但多维数组要采用Arrays.deepToString;比较操作一维用equals,多维用deepEquals。

         程序设计基本目标:将保持不变的事物与会发生改变的事物相分离,这能通常采用策略模式,将会发生变化的功能写成一个接口,让不同适应类来实现。

        数组排序采用compare方法,创建一个Comparator接口来做,也可以用个个reverseOrder方法来生成一个Comparator,binarySearch方法是在排序完成后才能用的。

          



目录
相关文章
|
2月前
|
设计模式 程序员 C++
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
【C++ 泛型编程 高级篇】C++模板元编程:使用模板特化 灵活提取嵌套类型与多容器兼容性
274 2
|
Java Spring 容器
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(上)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(上)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(上)
|
2月前
|
存储 安全 编译器
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
73 1
|
2月前
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
55 1
|
5月前
|
XML Java 数据格式
[读书笔记]Spring中的容器设计详解
[读书笔记]Spring中的容器设计详解
18 0
|
5月前
|
Java API 容器
[读书笔记]IOC容器的依赖注入详解
[读书笔记]IOC容器的依赖注入详解
42 0
|
C语言 C++ 容器
【泛型编程】类模板实现简单的vector容器
【泛型编程】类模板实现简单的vector容器
78 0
|
Java Spring 容器
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(下)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(下)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(下)
|
Java Spring 容器
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(中)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(中)
【小家Spring】细说Spring IOC容器的自动装配(@Autowired),以及Spring4.0新特性之【泛型依赖注入】的源码级解析(中)