[Java] HOW2J(Java中级)
异常
- 定义:导致程序正常流程被中断的事件
- 异常处理常见手段
- try catch:将可能抛出异常的代码放在try的块中,一旦出现异常就跳转到catch的块中处理
- throws/throw:不在本模块处理异常,而是交给调用者处理
- finally:无论是否出现异常,都会执行(保证能正常结束)
- 使用异常的父类进行catch:可以,但可能不精确
- 多异常捕捉:分别进行catch,或放在一个catch里统一捕捉
- throws出现在方法声明上(可能出现异常),而throw通常出现在方法体内(一定抛出异常)
- 异常分类
- 可查异常(CheckedException):必须进行处理的异常,否则编译不通过
- 运行时异常(RuntimeException):不是必须进行try catch的异常,不try catch也不会有编译错误,如下标越界或空指针
- 错误(Error):系统级别的异常,不要求强制捕捉,如内存耗尽

文件
- 文件类(java.io.File):文件和文件夹对象都是File,有File对象不代表硬盘里有文件
- 流(Stream)就是一系列数据(文件、数据库、网络),用于不同介质之间的数据交互
- 操作文件用File,操作文件的内容用Stream
- 字节流
- 字节输入流(InputStream):读取文件的数据到程序中(硬盘->JVM内存),为抽象类,只提供方法声明
- 字节输出流(OutputStream)
- java.io.FileInputStream是InputStream的子类,用于对文件的读取
- java.io.FileOutputStream是OutputStream的子类,用于向文件写数据
- 字符流
- 字符输入流(java.io.Reader)
- 字符输出流(java.io.Writer)
- java.io.FileReader是Reader的子类,用于从文件读数据
- java.io.FileWriter是Writer的子类,用于向文件写数据
- 用完后,在finally中关闭流
- 字节流与字符流的区别:字节流直接与终端文件进行数据交互,字符流需将数据经过缓冲区处理才与文件进行数据交互,字符流处理中文更方便
- 常见编码
- ASCII:数字和字母
- GBK:中文
- UNICODE:所有文字,Java采用的编码方式
- UTF-8:UNICODE的简化版,节省内存
- ANSI:本地码,中文操作系统就是GBK
- 缓存流
- 一次性读较多的数据到缓存,缓存中数据读完后再到硬盘取数据,以减少硬盘的访问次数(用大碗吃饭)
- 与用户交互时,键盘输入完了再读数据
- 缓存流必须建立在一个存在的流的基础上
- 缓冲字节输入流(java.io.BufferedInputStream)
- 缓冲字节输出流(java.io.BufferedOutputStream)
- 缓存字符输入流(java.io.BufferedReader):一次读取一行数据
- 缓存字符输出流(java.io.PrintWriter):一次写一行数据
- readLine():读取一行数据,默认以“\n”作为分隔符
- flush():立即把数据写到硬盘
- 数据流
- 数据输入流(java.io.DataInputStream)
- 数据输入流(java.io.DataOutputStream)
- readUTF()、writeUTF():格式化读写
- 对象流
- 序列化:一个对象以流的形式进行传输。要求该对象对应的类必须实现Serializable接口
- 序列化操作类(java.io.ObjectOutputStream):将对象序列化为指定格式的二进制数据
- 反序列化操作(java.io.ObjectInputStream):将序列化的二进制对象信息转换回对象内容
- writeObject():序列化对象
- readObject():从序列流中读取对象
- 如果对象中某些属性的内容不需要被保存,定义为transient
- 扫描流
- Scanner:逐行读取数据,比System.in.read()更方便
- System类中的IO常量
- System.in:InputStream类对象,用于接收键盘的数据输入
- System.out:PrintStream类对象,用于显示器上的信息输出,可调用PrintStream类中的println()
- System.err:PrintStream类对象,用于显示器上的错误输出
集合框架
- java.util.Collection
- Set、List、Queue、Deque的接口
- 常用方法
- public boolean add(E e)
- public Iterator<E> iterator()
- java.util.List
- 扩充方法(父接口:Collection)
- public E get(int index):取得索引标号的内容(重要)
- public E set(int index, E element):修改指定索引编号的内容
- public ListIterator<E> listIterator():为ListIterator接口实例化
- 扩充方法(父接口:Collection)
- java.util.ArrayList
- 实现了接口java.util.List
- 大小随对象增加而增长,可代替数组
- 数据按照保存顺序存放,允许重复
- 常用方法
- add():增加
- contains():是否存在对象,需要覆写equals()
- get():获取指定位置
- indexOf():获取对象位置
- remove():删除,需要覆写equals()
- set():替换
- size():获取大小
- toArray():转换为数组,不指明类型则转为Object数组
- addAll():把另一个容器的所有对象加进来
- clear():清空
- 遍历方法
- for
- iterator:在while或for循环中使用
- for::无法进行ArrayList的初始化,无法得知当前是第几个元素
- java.util.LinkedList
- 实现了List<E>、Queue<E>接口
- 线性表,分为Queue(FIFO)、Stack(FILO)、Deque(双向链表)等
- java.util.HashMap<K,V>
- 实现了Map<K,V>接口
- 以key-value对的方式存储数据
- key的值是唯一的,以相同的key插入的value会覆盖原有的值,同一个value可以以不同key插入
- 与List<E>相比,可以实现极为高效的查找操作
- java.util.HashTable<K,V>
- 与hashMap<K,V>相比
- 不能存放null
- 线程安全
- 与hashMap<K,V>相比
- java.util.LinkedHashSet<K,V>
- 实现了Set<E>接口
- 元素按插入顺序排序
- java.util.HashSet<E>
- 实现了Set<E>接口
- 封装了Map<E>
- value不能重复
- 元素没有顺序
- 不同于List<E>,不提供get()获取指定元素位置,遍历需用迭代器,或增强for
- java.util.Collections
- 容器的工具类
- 泛型(Generic)容器
- 不指定泛型的容器可存放任意类型元素,指定了泛型的容器只能存放指定类型元素(保证元素类型一致)
- 前后都要使用泛型,如List<Hero> genericheros = new ArrayList<Hero>();

[Java] HOW2J(Java中级)的更多相关文章
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- Java基础-输入输出-3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。
3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc. try { FileInputStream in = ...
- Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt ...
- JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...
- java初探/java读取文件
import java.io.*; import java.util.Arrays; public class WriteText { public static void main(String[] ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- java高级---->Java动态代理的原理
Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程 ...
- CentOS安装JAVA后JAVA版本不对的问题
今天用CentOS安装JDK,发觉在安装完成后,输入java命令来验证是否安装成功时,出现 Usage: gij [OPTION] ... CLASS [ARGS] ... to i ...
随机推荐
- PaddleOCR详解
@ 目录 PaddleOCR简介 环境配置 PaddleOCR2.0的配置环境 Docker 数据集 文本检测 使用自己的数据集 文本识别 使用自己的数据集 字典 自定义字典 添加空格类别 文本角度分 ...
- MySQL数据库高级四:工具拾遗(视图)
视图
- Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- linux下更新gcc
1 下载源码 链接 目前最新为9.2版本. 2 解压 tar -zxvf gcc-9.2.0.tar.gz cd gcc-9.2.0 3 download_prerequisites脚本 运行这个脚本 ...
- [Vue warn]: Unknown custom element: <terminal-process> - did you register the component correctly? For recursive components, make sure to provide the "name" option.
Vue组件注册报错问题 import 不要加{},排查出如果页面引用单个组件的时候不要加上{}中括号,引入多个组件时才能派上用场,中括号去除问题即可解决.
- Salesforce学习之路(六)利用Visualforce Page实现页面的动态刷新功能
Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类 ...
- 基本dos命令
Dos命令 打开cmd方法 开始---windows系统---命令提示符 win键 + R键 输入cmd --- 回车 按住Shift键---右击任意文件夹-----单击在此处打开PowerShell ...
- 实现spaCy实体标注模型
命名实体识别是指对现实世界中某个对象的名称的识别.与词性标注一样,是自然语言处理的技术基础之一.它的作用主要是通过模型识别出文本中需要的实体,也可以推导出实体之间的关系(实体消歧). 本文介绍的是运用 ...
- OOP-面向对象(二)
面向对象三大特征: 封装 继承 多态 -封装:对类中成员属性和方法的保护,控制外界对内部成员的访问,修改,删除等操作 私有的: private 在本类内部可以访问,类的外部不可以访问.(python中 ...
- 太全了!Redis主从复制原理以及常见问题总结
相信很多小伙伴都已经配置过主从复制,但是对于redis主从复制的工作流程和常见问题很多都没有深入的了解.这次给大家整理一份redis主从复制的全部知识点. 下方可视频观看,效果更佳 Redis实战精讲 ...