为应对近期单位认证:整理点Java知识

首先整理Java常见的类库:

1.Java.lang

这个 算是我们开发经常用到的基础类了,包含的类有object超类,8种类型的包装类,字符串类,线程类,异常类等

如下所示:图来自:链接

异常处理机制:

Throwable
Throwable
Throwable是 Java 语言中所有错误或异常的超类。
Throwable包含两个子类: Error 和 Exception。它们通常用于指示发生了异常情况。
Throwable包含了其线程创建时线程执行堆栈的快照,它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息。
Exception
Exception及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
RuntimeException
RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
编译器不会检查RuntimeException异常。例如,除数为零时,抛出ArithmeticException异常。RuntimeException是ArithmeticException的超类。当代码发生除数为零的情况时,倘若既"没有通过throws声明抛出ArithmeticException异常",也"没有通过try…catch…处理该异常",也能通过编译。这就是我们所说的"编译器不会检查RuntimeException异常"!
如果代码会产生RuntimeException异常,则需要通过修改代码进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情况的发生!
Error
和Exception一样,Error也是Throwable的子类。它用于指示合理的应用程序不应该试图捕获的严重问题,大多数这样的错误都是异常条件。
和RuntimeException一样,编译器也不会检查Error

异常分类
Java将可抛出(Throwable)的结构分为三种类型:被检查的异常(Checked Exception),运行时异常(RuntimeException)和错误(Error)。

1.运行时异常
         定义: RuntimeException及其子类都被称为运行时异常。
         特点: Java编译器不会检查它。也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用                    try-catch语句捕获它",还是会编译通过。例如,除数为零时产生的ArithmeticException异常,数组越界时产生的                            IndexOutOfBoundsException异常,fail-fail机制产生的ConcurrentModificationException异常等,都属于运行时异常。
                  虽然Java编译器不会检查运行时异常,但是我们也可以通过throws进行声明抛出,也可以通过try-catch对它进行捕获                    处理。
                  如果产生运行时异常,则需要通过修改代码来进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情                     况的发生!
2.被检查的异常
               定义: Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于被检查异常。
               特点: Java编译器会检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通                             过编译。例如,CloneNotSupportedException就属于被检查异常。当通过clone()接口去克隆一个对象,而该对象                            对应的类没有实现Cloneable接口,就会抛出CloneNotSupportedException异常。
                          被检查异常通常都是可以恢复的。
3.错误
              定义: Error类及其子类。
              特点: 和运行时异常一样,编译器也不会对错误进行检查。
              当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例                     如,VirtualMachineError就属于错误。

2.java.io

1. 流的概念

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。

程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。

2. 字节流与字符流

在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)。

java中提供了专用于输入输出功能的包Java.io,其中包括: InputStream,OutputStream,Reader,Writer。

InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象。

Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串。

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点。

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。

字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

具体案例:见  链接

3.java.net

实现网络通信的所有类

4.java.util

java.util包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包

java的集合框架为程序提供了一种处理对象组的标准方式。设计了一系列标准泛型接口:
⑴Collection()接口

扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Collection接口,并提供了iterator()方法来返回一个迭代器。

add()方法添加对象,

remove()方法删除元素

clear()删除集合所有元素(size=0)

contains()方法查看集合是否包含对象

toArray()方法返回集合元素数组

equals()方法比较两个集合是否相等

size()方法返回集合中元素的数目

isEmpty()判断集合是否为空

hashCode()返回调用集合的散列码

iterator()返回调用集合的迭代器。

⑵List()接口

扩展了Collection接口,存储一个序列的元素(列表基于0的索引),可以包含重复的元素,但不能有null值。

获得特定位置的对象调用get()方法

用set()方法给特定位置元素赋值

用indexOf()或lastIndexOf()方法分别获得对象的第一个实例或最后一个实例所在的位置

subList()方法取子列表

listIterato()返回一个迭代器。

⑶Set接口

扩展了Collection接口,该集合不允许存在相同的元素(包括唯一null值)。SortedSet接口,扩展了Set接口并声明自已是升序的集合。

First()或Last()方法分别获得第一或最后一个对象

subSet()获得子集

headSet()和tailSet()方法分别获得从头开始或直到末尾的子集。

⑷Queue(队列)接口

扩展了Collection接口,并声明一个队列行为(FIFO,先进先出列表)。Offer()方法在队列尾插入元素。element()和peek()方法获得但不移除队列的第一个元素,如果队列为空,element()抛出NoSuchElementException异常,peek()返回null。poll()和remove()方法获得并移除队列的第一个元素,如果队列为空,poll()返回null,remove()抛出异常。

⑸Comparator(比较器)接口,定义了两个方法:compare()和equals()方法,通过改写compare()方法,能够改变对象排序的方式。

⑹Iterator(迭代器)接口、ListIterator(列表迭代器,可进行双向遍历)接口

一般来说,使用迭代器在集合中遍历时应遵循下面的步骤:一通过集合的iterator()得到一个指向集合开始处的迭代器:Iterator itr=collectionObject.iterator();二设置一个判断是否有下一个元素的循环:如while(itr.hasNext()){。三在循环中取出下一个元素:如Object element=itr.next();

⑺RandomAccess(随机访问)接口。被ArrayList类和遗留的Vector类实现。

⑻Map(映射)接口、Map.Entry (Map的嵌套类、内部类)接口、SortedMap(默认按key键升序排列的映射)接口。映射是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个值。Map接口提供三种collection 视图:键集、值集合或键-值映射关系集。映射不是集合,因为它们不实现Collection接口,但是可以通过使用entrySet()方法获得键-值映射关系的集合视图跟效果,或使用keySet()方法获得键的集合视图,使用values()方法获得值的集合视图。put()方法将值放入映射中,get()得到与键k相关联的值。SortedMap接口增加了获取子映射的headMap()、tailMap()、subMap()方法和获取首尾键的firstKey()、lastKey()方法。Map.Entry接口定义了获取键值的getKey()、getValue()方法和替换值的setValue()方法。
Collection集合的有序是Set,Map的有序是TreeMap。
异常:试图增加一个不兼容的对象到集合或映射中,将抛出ClassCastException;如果使用无效索引,抛出IndexOutOfBoundException;null不允许存在于集合或映射中,如果试图使用null对象,抛出NullPointException;当修改不可改变的集合或映射时,抛出UnsupportedOperationException;当调用下一个对象不存在时,抛出NoSuchElementException;集合框架接口示意(父类∈子类):1、Collection∈⑴List,⑵Set∈SortedSet。2、Map∈SortedMap。

java.lang、java.io、java.net、java.util解释整理相关推荐

  1. spring:Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date‘

    前言 springboot有接口日期转换的经典问题,给Entity加@JsonFormat解决了输出json日期格式的输入输出问题,但是解决不了非@RequestBody/也就是普通表单提交的日期格式 ...

  2. 【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Groovy 工程时 , 报如下错误信息 : gradle-resources-test:Groovy_Demo.main: java.lan ...

  3. ant 时 --java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils 解决方法

    使用ant 时, 有可能出现java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils的错误 但是直接命 ...

  4. 解决 java.lang.RuntimeException: Method i in android.util.Log not mocked. See http://g.co/androidstudi

    解决 java.lang.RuntimeException: Method i in android.util.Log not mocked. See http://g.co/androidstudi ...

  5. Failed to convert value of type 'java.lang.String' to required type 'java.util.Date

    异常原因:Controller层获取JSP页面请求参数是String类型,而在Controller层接收时使用Date类型,属于方法参数类型不匹配异常 警告: Failed to bind reque ...

  6. Kotlin 编译出错 java.lang.ClassNotFoundException: com.sun.tools.javac.util.context

    最近遇到一次命令行执行 gradlew checkcode时报错的问题,某个组件的Kotlin编译出错了,抛出的异常为 compileReleaseKotlin fails with java.lan ...

  7. Cannot convert value of type ‘java.lang.String‘ to required type ‘java.util.Map‘ for property ‘param

    问题描述 若依中使用feign进行远程调用,在get请求中使用@SpringQueryMap映射对象时,映射对象的父类中带有Map<String, Object>类型的params属性时, ...

  8. java.lang.NoClassDefFoundError: org/apache/geronimo/mail/util/Base64Encod——解决方案

    最近在弄通过javaMail发送信息到邮箱,老是会报这样的错误:Exception in thread "main" java.lang.NoClassDefFoundError: ...

  9. Java代码引用flink报错:java.lang.NoClassDefFoundError: org/apache/flink/streaming/util/serialization/Deseri

    我在 IDEA 环境中调试 Kafka+Flink 自己编写的例子时 代码编译都是通过的,但是进行Debug调试时,出现如下异常: java.lang.NoClassDefFoundError: or ...

  10. java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64

    java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64 前言 后台提供的加密策略中要求对参数进行Base64编码 ...

最新文章

  1. python错误-新手常见Python错误及异常解决处理方案
  2. 基于布隆过滤器实现敏感词识别和过滤
  3. 深度理解do{} while(0)语句的作用
  4. docker in all
  5. dhcp计算机毕业论文,基于线程池机制的高性能DHCP服务器研究与实现-计算机科学与技术专业毕业论文.docx...
  6. 几个简单的正则小例子
  7. SpringCloud(三)Eureka之集群搭建以及将服务注册到多个EurekaServer
  8. gitlab创建分支上传文件_环境搭建:gitLab平台的搭建和简单使用
  9. 手摸手教你阅读和调试大型开源项目 ZooKeeper
  10. 数字逻辑复习总结(超全!内含例题!)
  11. 文本摘要 ACL2021
  12. JS旋转木马图片轮播
  13. 云服务器连接手机本地文件在哪里,云服务器如何连接本地文件
  14. Qt 中信号和槽机制
  15. WGS84 与 UTM 互转(Python代码版)
  16. 2019-06-12-pintos 实验1
  17. 建立名字为Project1的解决方案
  18. 深度学习,分割后处理之通过连通成分分析去除假阳性区域,提高分割准确度
  19. 阿里云系统导出到本地虚拟机
  20. 一些基础的CSS英语单词

热门文章

  1. Cassandra 简介(一)
  2. Vackbot已覆盖 |【漏洞通告】Spring框架远程代码执行漏洞
  3. 北邮20网安院面试问题汇总
  4. 复权因子:历史数据库与回测
  5. 一整只烧鹅价格=烧鹅上庄价格+烧鹅下庄价格这个关系不因货币变掉而变
  6. 面向中小企业的SpringBoot管理系统,拿来学习真香
  7. 动态代理:1 个经纪人如何代理 N 个明星
  8. PHP解耦的三重境界(浅谈服务容器)
  9. 移动端H5页面开发遇到的问题和解决办法(一)
  10. Mac版Ps、AE、PR不能突然使用?Adobe全家桶关闭自动更新的方法