JAVA语言之JavaSE高阶知识总结
小标 2019-04-03 来源 : 阅读 966 评论 0

摘要:本文主要向大家介绍了JAVA语言之JavaSE高阶知识总结,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之JavaSE高阶知识总结,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

JAVA语言之JavaSE高阶知识总结

1. 集合



从上图可以看出,集合框架包含两种类型的容器:一是Collection,用来存储元素,二是Map,用来键值对关系映射,Collection接口又分为List、Set、Queue三个子接口,下面又分为一个抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap


接口


Collection:Collection存储一组不唯一、无序的对象


List:List存储一组不唯一、有序的对象


Set:Set存储一组唯一、无序的对象


SortSet:继承自Set,存储有序的对象


Map:Map存储一组键值对象


Map.Entry:描述Map中的一个对象


SortMap:j继承自Map,使Key保持升序


List和Set的区别


List支持有序且不唯一的对象,Set只能存放无序对象,并且可以重复


List可以通过索引取值,查找速度快,删除和插入速度慢,插入数据时,会影响当前数据的位置


Set不可以通过索引取值,查找速度慢,删除和插入速度快,插入数据时,不会影响当前数据的位置


实现类


LinkList:允许为null,用于创建链表数据结构,线程非安全


ArrayList:动态增长数组,线程非安全,增长偏移量为当前长度的50%


HashSet:不允许出现重复对象,只允许存储一个null


LinkedHashSet:具有可预知迭代顺序的Set接口的哈希表和链接列表实现


HashMap 是一个散列表,它存储的内容是键值对映射,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,线程非安全


LinkedHashMap:继承于HashMap,使用元素的自然顺序对元素进行排序


如何使用迭代器


iterationiterator():通过容器获得该容器的迭代器对象


hasNext():判断迭代器中是否存在下一个元素


next():返回迭代器中的下一个元素


2. 泛型


泛型允许提供编译类型的安全检测机制,该机制能够确保在编译时就能够检测到非法数据。泛型的本质是参数化l类型,就是操作的数据被指定为一个数据类型


泛型方法


范围方法在调用时可以接收不同类型的参数


定义规则:


所有泛型方法声明都有一个参数类型声明部分<>,该参数声明在方法返回值之前


每个参数声明部分可以包含一个或多个数据类型,用逗号隔开


类型参数能被声明返回值类型,也能被声明为形参类型


类型参数只能表示引用类型


泛型类


泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分


因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型


public class Box<T> { private T t; public void add(T t) { this.t = t; } public T get() { return t; }


类型通配符


?:可以接收任意泛型对象


泛型的上限:extends


泛型的下限:super


3. 流


抽象基类


Reader:字符输出流


Writer:字符输入流


InputStream:字节输出流


OutputStream:字节输入流


实现类


FileReader:字符输入流,从文件中读取某个字符


BufferedReader:缓冲字符输入流,作用是为其他字符输入流提供缓冲功能,创建时需要向它传递一个字符输入流,BufferedReader会将Reader中的字符分批读取,每次读取一部分


InputStreamReader:输入转换流,将一个字节流中的字节解码成字符,创建时需要一个字节输入流


FileWriter:字符输出流,向文件中写入某个字符


BufferedWriter:缓冲字符输出流,作用是为其他字符输出流提供缓冲功能,创建时需要向它传递一个字符输出流,BufferedWriter会将Writer中的字符分批写入,每次写入一部分


OutputStreamReader:用于将写入的字符编码成字节后写入一个字节流,创建时需要一个字节输出流


FileInputStream:字节输入流,从文件中读取某个字节,通常用来读取图片


FileOutputStream:字节输出流,向文件中写入某个字节,通常用来写入图片


4. 序列化


序列化对象


ObjectOutputStream类用来序列化一个对象,创建时需要传递一个字节输出流,通过调用writeObject()方法将对象写入到文件中


反序列化对象


ObjectInputStream类用来反序列化一个对象,创建时需要传递一个字节输入流,通过调用readObject()方法将对象从文件中取出


5. 程序、进程和线程


程序:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念


进程:进程就是程序的执行过程


线程:通常一个进程中包含若干个线程,线程是一个比进程更小的执行单位,多个线程贡献一块内存空间


6. 线程的基本状态


新建:新建一个线程对象


可运行:线程创建后,调用该线程start()方法后,该线程就位于可运行线程池中等待线程调度,获得时间片


运行:可运行的线程获得了时间片,执行程序代码


阻塞:线程因为某种原因放弃了cpu使用权,让出时间片,程序暂停。直到线程进入可运行状态,才有可能再次获得时间片。发生阻塞无外乎三种情况,一是调用了wait()方法,JVM会将其放入等待队列中。只有其他线程调用notify()或notifyAll(),等待队列中的线程才会被加入到锁池。二是运行线程在获取对象的同步锁时,发现同步锁已被其他线程占用,JVM会将其放入锁池,只有拿到锁才能进入可运行状态。三是运行线程调用了sleep()、join()、或者I/O请求,JVM会将该线程置为到阻塞状态,当sleep超时、join等待线程结束或超时、I/0处理完毕,线程可重新进入可运行状态。


死亡:线程run()、main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期,线程死不可复生


7. 反射


Java反射机制就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取属性以及调用方法的机制称为反射


Class 表示正在运行的Java应用程序中的类和接口


如何获取某个class文件对象的class对象?


已知类和对象,通过类名.class或对象.getClass()


未知类和对象通过Class.forName("包名.类名")


Constructor 关于类的单个构造方法的信息以及对它的访问权限


Constructor类的实例对象代表类的一个构造方法


如何获取某个类的所有构造方法?


通过class对象的getConstructors()方法


Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限


Field代表某个类中的一个成员变量,并提供动态访问的权限


如何获取所有的成员变量?


通过getFields()方法获取所有public属性,通过getDeclaredFields()方法获取所有声明属性


如何获取指定的成员变量


通过getField("")获取public属性,通过getDeclaredField("name")获取声明属性


设置Field变量是否可以访问


field.setAccessible(boolean);


Field变量值的读取、设置



field.get(obj);


field.set(obj, vlaue);



Method 提供关于类或接口上单独某个方法的信息


Method类代表某个类中的一个成员方法


如何获取所有方法?


通过getMethods()方法获取所有public方法,通过getDeclaredMethods()方法获取所有声明方法


如何获取指定方法?


通过getMethod(String name, Class<?>...parameterTypes)获取指定public方法,通过getDeclaredMethod(String name, Class<?>...parameterTypes)方法获取指定声明方法


通过反射执行方法


invoke(Object obj, Object...args)


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程