首页 > 编程语言 >Java学习笔记2

Java学习笔记2

时间:2022-12-04 20:57:32浏览次数:30  
标签:Java 方法 接口 学习 extends 笔记 new java 异常

5.3.3 枚举类型

public enum Season
{
a,b,c,d;
}

5.3.4 抽象类

abstract class A

  • 抽象类必须被继承,与final类相反
  • 可以定义一个统一的编程接口
  • 抽象类定义所有子类共用的抽象方法,实现细节由子类完成

5.3.5 接口

  • Java不支持多继承

接口的声明

  • [修饰符] interface In1 [extends 父接口名]{ 接口体;}
  • 接口只能包含常量定义和抽象方法定义

接口的实现

  • class A implements In1, In2
  • 0 or all: 所有方法都要实现
  • 接口中声明方法可省略public和abstract,但在实现的时候,要有public修饰

接口作为类型的使用

接口与abstract类的比较

  • 接口中只能有常量,只能有abstract方法

5.4 内部类

  • 内部类不能声明静态变量和静态方法
  • 外部类可以用内部类声明对象
  • 声明方法:直接声明、new
  • 内部类可以作为其他类的成员

5.5 数组

  • 数据类型相同
  • 数组是引用类型,java中的数组属于对象的成员变量

5.5.1 一维数组

  • 声明+初始化?
int Arr[] = {1,2,3}

5.5.2 二维数组

数组的复制
  • java.lang.System类提供了静态方法arraycopy()
static void arraycopy(Object src, int srcPos, Obj dest, int destPos, int length)

6 异常和断言

6.1 异常概述

  • 所有异常必须是Throwable类的实例或其子类
  • throw一个异常:生成一个异常对象并把它提交给运行时系统的过程
  • catch一个异常:运行时系统从生成异常的方法开始回溯,直到找到包含相应异常处理的方法

6.2 异常的处理

try{}
catch(){}
catch(){}
finally{}
  • 异常总是在方法内产生
  • 若一个方法产生了异常,而不处理异常,则可以在方法声明时,用throws抛出异常,传递给其调用者或更高一级的调用者,直到被捕获。

自定义异常

class 自定义异常名 extends Exception{

}
throw new 异常类名();

finally语句

  • finally语句总是在return之前执行

6.3 断言

  • 断言主要用于程序开发和测试阶段

  • 打开断言java -ea:com.mydx.mylib...

  • 系统级打开断言-esa

  • 关闭断言java -da:com.mydx.mylib...

  • 系统级关闭断言-dsa

7 输入输出及文件操作

7.1 流的概念

  • java.io和java.lang处理输入输出

标准的I/O流

  • 键盘:stdin

  • 监视器:stdout

  • 每当main方法被执行,就自动生成下述三个类的对象:

    • System.in: extends InputStream
    • System.out: extends PrintStream
    • System.err: extends PrintStream
  • java.io 有字节流和字符流

  • 字节流extends InputStream或OutputStream

  • 字符流extends Reader和Writer

7.2 文件

  • File是io包中的非流类
  • File的构造方法

随机文件流

  • RandomAccessFile implemennts DataInput DataOutput
  • RandomAccessFile类仅限操作文件
  • RandomAccessFile类有个文件指针
  • RandomAccessFile常用方法
  • RandomAccessFile常用方法都会抛出IOException异常
raf1.write(name.getBytes());
raf1.writeInt(age);
raf1.close;

7.3 字节流

  • 字节流extends InputStream或OutputStream,两个都是抽象类

InputStream

  • read()

数据流

数据流类可处理字节和字节数组,还可以实现对文件不同数据类型的读写

  • DataInputStream和DataOutputStream分别实现了接口DataInput和DataOutput
  • 方法:
    readInt()
    readByte()
    writeBoolean()
    writeChar()
    
  • 构造方法:
DataInputStream(InputStream in)
DataOutputStream(OutputStream out)
  • DataInputStream和DataOutputStream的类方法

文件流

FileInputStream

  • 构造方法:
FileInputStream f0 = new FileInputStream("/a.txt");
File f = new File("/a.txt");
FileInputStream f1 = new FileInputStream(f);

FileOutputStream

  • FileOutputStream类的对象创建不依赖于文件是否存在,没有就创建
  • FileNotFoundException异常:无法创建、打开
  • 利用数据流向文件中写数据
int[] myArr = {1,2,3}
DataOutputStream doc = new DataOutputStream(new FileOutputStream("ints.dat"))
for ()
  dos.writeInt(myArray[i]) 

内存的读写

ByteArrayInputStream ByteArrayOutputStream

字符流

FileReader

FileWriter

  • FileWriter打开一个只读文件,引发IOException

缓冲流

  • BufferedReader和BufferedWriter类

BufferedReader

  • 构造方法
BufferedReader(Reader in)

BufferedWriter

  • 构造方法
BuffeiwedWriter(Writer out, int bufSize)

Scanner类

  • java.lang包的System类有in和out
Scanner reader = new Scanner(System.in)

之后调用reader的各种方法,实现读取用户在命令行输入的各种数据

7.5 对象流

ObjectInputStream和ObjectOutputStream类

  • 构造方法
    ObjectInputStream(InputStream in)
    
  • 实现了接口ObjectXput,是XputStream的子类
  • 通常用FileXputStream对象作为参数创建ObjectXputStream对象,之后用readObject()/writeObject()方法
  • readObject()返回类型为Object

可串行化

  • java中,只有可串行化的对象才能通过对象流进行传输
  • 只有实现了Serializable接口的类才能被串行化
  • Serializable接口不包含任何方法

7.6 过滤流

字符过滤流

  • 其他过滤流都是FilterReader/FilterWriter的子类
  • FilterReader/FilterWriter都被定义为abstract,但它们没有抽象方法。abstract的作用是强制二者不能被实例化,必须被继承,

7.7 管道

  • 连接方法:
    • 构造
    • connect

7.8 不同流的速度比较

  • 内存映射>缓冲>文件>RandomAccessFile

Java I/O流的其它应用

8 线程

8.1 线程的概念

  • 进程是程序的一次动态执行过程

标签:Java,方法,接口,学习,extends,笔记,new,java,异常
From: https://www.cnblogs.com/DWYCWWYHWYA/p/16931980.html

相关文章

  • 机器学习实战 电子书 pdf
    python+机器学习,机器学习必备的入门书籍,关注公众号:后厂村搬砖工。回复:机器学习电子书即可......
  • 设计模式——初学学习经验
    设计模式各位读者朋友你们好,我是你们的好朋友IT黑铁,在这学期的学习过程中初步认识和学习了设计模式和架构思想。以下内容最全的几个是我当前有点理解的模式,其余内容缺少的......
  • tomcat_动态java项目的目录结构和tomcat_与IDEA集成&创建web项目
    tomcat_动态java项目的目录结构:静态项目和动态项目:目录结构:java动态的目录结构:项目的根目录WEB-INF目录web.xml......
  • .Net gRPC学习笔记
    目录.NetgRPC学习笔记什么是RPC和本地调用有什么区别RPC模式RPC的三个过程为什么要使用RPCRPC和其他协议的区别RPC使用场景RPC的流程RPC核心概念术语什么是gRPC.NET官方的......
  • 2022-2023-1 20221312 《计算机基础与程序设计》第十四周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WE......
  • Blazor和Vue对比学习(进阶.路由导航一):基本使用
    Blazor和Vue都是单文件组件SPA,路由的实现逻辑非常相似,页面路径的改变都是组件的切换,但因为各自语言的特性,在实现方式上有较大差异。 一、安装1、Vue:Router是Vue的一个......
  • dremio 源码分析学习的几个方便工具 二
    主要是在以前周边工具上做一个简单的扩展说明扩展jdwp调试 可以直接配置dremio开启jdwp方便调试,对于依赖的包可以通过dremio的安装包提供,同时也有一个简单的缺点就......
  • JAVA反射举例
    1、什么是反射?我们在学Java的过程中一定会遇到Java反射,不管是我们常用的框架,还是我们解决一些特殊问题。多多少少都会牵扯到。那么什么才是反射?很抽象的一个概念!!没有之......
  • 跨链技术学习理解(一)公证人机制、哈希锁定
    跨链资产交换问题两个用户在两个链上都有相应的账户,一个用户如何在用A链上的资产交换另一个用户在B链上的等价另一种资产。比如肥兔子想用1个比特币换豆畜子的10个以太。......
  • 【博学谷学习记录】超强总结,用心分享。线程池重难点知识
     线程池 1.1      为什么需要线程池  在实际使用中,线程是很占用系统资源的,如果对线程管理不完善的话很容易导致系统问题。因此,在大多数并发框架中都会使用......