异常

  • 定义:导致程序正常流程被中断的事件
  • 异常处理常见手段
    • 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接口实例化
  • 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
      • 线程安全
  • 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中级)的更多相关文章

  1. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  2. Java基础-输入输出-3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。

    3.编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc. try { FileInputStream in = ...

  3. 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 ...

  4. JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。

    1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...

  5. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  6. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...

  7. java初探/java读取文件

    import java.io.*; import java.util.Arrays; public class WriteText { public static void main(String[] ...

  8. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  9. java高级---->Java动态代理的原理

    Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程 ...

  10. CentOS安装JAVA后JAVA版本不对的问题

    今天用CentOS安装JDK,发觉在安装完成后,输入java命令来验证是否安装成功时,出现 Usage: gij [OPTION] ... CLASS [ARGS] ...          to i ...

随机推荐

  1. 围绕 Kubernetes 的 8 大 DevOps 生产关键实践

    本文主要介绍 DevOps 的 8 大关键实践在 Kubernetes 平台下如何落地,结合我们目前基于 Kubernetes 平台的 DevOps 实践谈谈是如何贯彻相关理念的,这里不会对其具体实现 ...

  2. 常见SQL命令总结学习 -- <1>

    SQL学习网练习记录 参考1:http://sample.jimstone.com.cn/xsql/Course/4.html 参考2:http://sample.jimstone.com.cn/xs ...

  3. 【linux】驱动-10-pinctrl子系统

    目录 前言 10. pinctrl子系统 10.1 参考路径 10.2 pinctrl子系统主要工作 10.2 pinctrl子系统格式说明 10.3 概念 10.4 实例分析 10.4.1 pin ...

  4. Vscode部分快捷键 Ps的简单使用 less中的除法问题 H5 四种布局

    vscode 部分快捷键 ctrl+/ 注释ctrl+回车 光标下移alt+shift+上下箭头 将本行代码向上或向下复制ul>li 自动写alt ,鼠标一直点,就会有很多光标,可以一起写ctr ...

  5. Java代理模式,一次复习完4种动态代理实现方式

    代理模式也是一种非常常见的设计模式.了解Spring框架的都知道,Spring AOP 使用的就是动态代理模式.今天就来系统的重温一遍代理模式. 在现实生活中代理是随处可见的,当事人因某些隐私不方便出 ...

  6. thinkphp各版本常用漏洞总结

    0x01 漏洞分析及复现 1.漏洞分析 漏洞影响范围: Thinkphp 5.1.0 - 5.1.31Thinkphp 5.0.5 - 5.0.23 漏洞产生原因: Thinkphp5.x版本(5.0 ...

  7. PYTHON工业互联网应用实战12—客户端操作

    本章节我们将实现与admin里类似的列操作"下达"功能,演示客户端是如何实现操作功能,同时,演示也会强调一点,何时合并你的功能代码,避免相同功能使用不同的代码段来实现,在企业开发中 ...

  8. Java刷题-tree

    一.分别按照二叉树先序,中序和后序打印所有的节点. 这道题就是书上的算法思想的实际使用,唯一需要特别注意到的是用递归的方式建树,还是比较巧妙的,因为一棵树的建立过程字符流是重复使用的,用递归的方式对根 ...

  9. Go-14-解决 go get golang.org/x/text 拉取失败问题

    现象 在执行go get -v github.com/spf13/cobra/cobra 时,报go get golang.org/x/text 拉取失败问题 解决方法: 在 ${gopath}/sr ...

  10. creating a table and inserting data

    /** Grocery list: Bananas (4) Peanut Butter (1) Dark Chocolate Bars (2) **/ CREATE TABLE groceries ( ...