营销的网站,怎么将dw做的网站导出,贵州建设监理协会网站,网站上的专题 怎么设计目录 
1、java语言有哪些优点和缺点? 
2、JVM 、 JDK 和 JRE的关系 
3、为什么说 Java 语言“编译与解释并存”#xff1f; 
4、Java和c的区别 
5、基本数据类型 
5.1、java的8种基本数据类型#xff1a; 
5.2、基本类型和包装类型的区别#xff1a; 
5.3、包装类型的缓存机…目录 
1、java语言有哪些优点和缺点? 
2、JVM 、 JDK 和 JRE的关系 
3、为什么说 Java 语言“编译与解释并存” 
4、Java和c的区别 
5、基本数据类型 
5.1、java的8种基本数据类型 
5.2、基本类型和包装类型的区别 
5.3、包装类型的缓存机制 
5.4、自动装箱和自动拆箱 
5.5、浮点数运算的精度丢失问题及解决办法 
6、变量 
6.1、成员变量与局部变量的区别 
6.2、静态变量有什么作用 
6.3、字符型常量和字符串常量的区别? 
7、方法 
7.1、静态方法和实例方法的区别 
7.2、静态方法为什么不能调用非静态成员? 
7.3、重载和重写的区别 
8、面向对象基础 
8.1、面向对象和面向过程的区别 
8.2、创建一个对象用什么运算符?对象实体与对象引用有何不同? 
8.3、对象的相等和引用相等的区别 
8.4、构造函数是什么能否被override类没有声明构造方法程序还能正确执行吗? 
8.5、面向对象三大特征 
8.6、接口和抽象类有什么共同点和区别 
8.7、深拷贝和浅拷贝的区别什么是引用拷贝 
9、Object类 
9.1、Object 类的常见方法有哪些 
9.2、 和 equals() 的区别 
9.3、为什么重写 equals() 时必须重写 hashCode() 方法 
10、String类 
10.1、String 为什么是不可变的? 
10.2、String、StringBuffer、StringBuilder 的区别 
10.3、String s1  new String(abc);这句话创建了几个字符串对象 
10.4、String#intern 方法有什么作用? 
10.5、String 类型的变量和常量做“”运算时发生了什么 
11、异常 11.1、Exception 和 Error 的区别 
11.2、Checked Exception 和 Unchecked Exception的区别 
11.3、Throwable 类常用方法有哪些 
11.4、try-catch-finally 如何使用 
11.5、finally 中的代码一定会执行吗 
11.6、如何使用 try-with-resources 代替try-catch-finally 
12、泛型的使用方式有哪几种 
13、反射 
13.1、反射的使用 
13.2、反射的应用场景 
14、注解的解析方法有哪几种 
15、什么是序列化?什么是反序列化? 
16、I/O流 
字节缓冲流 
Java 中 3 种常见 IO 模型 1、java语言有哪些优点和缺点? 
优点 
面向对象封装继承多态平台无关性 Java 虚拟机实现平台无关性支持多线程具备异常处理和自动内存管理机制支持网络编程并且很方便编译与解释并存 
缺点 
使用大量的内存垃圾回收机制需要占用大量内存可能导致程序的运行速度相对较慢。不支持底层操作Java使用虚拟机来实现无法和操作系统的底层打交道了。启动时间慢由于Java程序需要先启动虚拟机再执行程序启动时间相对较慢。 
2、JVM 、 JDK 和 JRE的关系 
JDKJava Development Kit是 Java 开发工具包是整个 Java 的核心它包含了JRE同时还包含了 javac(编译 java 源码的编译器)、jconsole基于 JMX 的可视化监控⼯具、javap反编译工具等等。JRE Java Runtime Environment是 Java 的运行环境包含 JVM 及 Java 核心类库。JVMJava Virtual MachineJava 虚拟机是整个 Java 实现跨平台的最核心的部分。所有 Java 程序会首先被编译为 .class 的类文件这种类文件可以在虚拟机上执行。 3、为什么说 Java 语言“编译与解释并存” 
高级编程语言按照程序的执行方式分为两种 
编译型语言通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般编译语言的执行速度比较快开发效率比较低。常见的编译性语言有 C、C、Go、Rust 等等。解释型语言通过解释器一句一句的将代码解释interpret为机器代码后再执行。一般开发效率比较快执行速度比较慢。常见的解释性语言有 Python、JavaScript、PHP 等等。 Java 语言既具有编译型语言的特征又有解释型语言的特征。因为 Java 程序要经过先编译后解释两个步骤由 Java 编写的程序需要先经过编译步骤生成字节码.class 文件这种字节码必须由 Java 解释器来解释执行。  
4、Java和c的区别 
Java 不提供指针直接访问内存程序内存更加安全。Java 的类单继承的C 支持多重继承虽然 Java 类不支持多继承但接口支持多继承。Java 有自动内存管理垃圾回收机制(GC)不需要程序员手动释放无用内存。C支持方法重载和操作符重载但是 Java 只支持方法重载操作符重载增加了复杂性这与 Java 最初的设计思想不符。…… 
5、基本数据类型 
5.1、java的8种基本数据类型 5.2、基本类型和包装类型的区别 
用途基本类型一般用来定义一些局部变量和常量在其他地方比如方法参数、对象属性中一般使用包装类型并且包装类型可用于泛型而基本类型不可以。存储方式基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中基本数据类型的成员变量存放在 Java 虚拟机的堆中。包装类型属于对象类型放在堆中。 占用空间相比于包装类型 基本数据类型占用的空间比较小。  比较方式对于基本数据类型来说 比较的是值。对于包装数据类型来说 比较的是对象的内存地址。整型包装类对象之间值的比较需要使用 equals() 方法。  
对于不同类型变量的存储问题有两条黄金法则 
引用类型总是被分配到“堆”上。不论是成员变量还是局部基础类型总是分配到它声明的地方成员变量在堆内存里局部变量在栈内存里。 
public class Test {// 成员变量存放在堆中int a  10;// 被 static 修饰也存放在堆中但属于类不属于对象// JDK1.7 静态变量从永久代移动了 Java 堆中static int b  20;public void method() {// 局部变量存放在栈中int c  30;static int d  40; // 编译错误不能在方法中使用 static 修饰局部变量}
}5.3、包装类型的缓存机制 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128127] 的相应类型的缓存数据Character 创建了数值在 [0,127] 范围的缓存数据Boolean 直接返回 True 或 False两种浮点数类型的包装类 Float,Double 没有实现缓存机制。 看如下代码 Integer i1  40; Integer i2  new Integer(40); System.out.println(i1i2); 上述代码应输出false。首先第一行代码会发生自动装箱因此变量i1使用的是缓存中的对象而i2会新new一个对象出来故两者不相等。 如果想比较包装类对象之间值需要使用equals。 
5.4、自动装箱和自动拆箱 
自动装箱将基本类型用它们对应的引用类型包装起来自动拆箱将包装类型转换为基本数据类型 装箱其实就是调用了 包装类的valueOf()方法拆箱其实就是调用了 xxxValue()方法。 
因此 Integer i  10 等价于 Integer i  Integer.valueOf(10) int n  i 等价于 int n  i.intValue(); 5.5、浮点数运算的精度丢失问题及解决办法 由于底层保存浮点数的机制会出现小数的精度发生损失的情况可以使用 BigDecimal 对浮点数的运算不会造成精度丢失。如 
BigDecimal a  new BigDecimal(1.0);
BigDecimal b  new BigDecimal(0.9);
BigDecimal c  new BigDecimal(0.8);BigDecimal x  a.subtract(b);
BigDecimal y  b.subtract(c);System.out.println(x); /* 0.1 */
System.out.println(y); /* 0.1 */
System.out.println(Objects.equals(x, y)); /* true */6、变量 
6.1、成员变量与局部变量的区别 
语法形式 成员变量属于类而局部变量是方法中定义的变量或参数成员变量可以被 public,private,static 等修饰符所修饰而局部变量不能被访问控制修饰符及 static 所修饰成员变量和局部变量都能被 final 所修饰。存储方式 如果成员变量是使用 static 修饰的那么这个成员变量是属于类的如果没有使用 static 修饰这个成员变量是属于类实例的。而对象存在于堆内存局部变量则存在于栈内存。 
6.2、静态变量有什么作用 静态变量也就是被 static 关键字修饰的变量。它可以被类的所有实例共享无论一个类创建了多少个对象它们都共享同一份静态变量。也就是说静态变量只会被分配一次内存即使创建了多个对象这样可以节省内存。 通常情况下静态变量会被 final 关键字修饰成为常量。 
6.3、字符型常量和字符串常量的区别? 
形式 : 字符常量是单引号引起的一个字符字符串常量是双引号引起的 0 个或若干个字符。含义 : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。占内存大小字符常量占 2 个字节; 字符串常量占若干个字节。  
7、方法 
7.1、静态方法和实例方法的区别 
调用方式在外部调用静态方法时可以使用 类名.方法名 的方式也可以使用 对象.方法名 的方式而实例方法只有后面这种方式。也就是说调用静态方法可以无需创建对象 。访问限制静态方法在访问本类的成员时只允许访问静态成员即静态成员变量和静态方法不允许访问实例成员即实例成员变量和实例方法而实例方法不存在这个限制。 
7.2、静态方法为什么不能调用非静态成员? 
静态方法是属于类的在类加载的时候就会分配内存可以通过类名直接访问。而非静态成员属于实例对象只有在对象实例化之后才存在需要通过类的实例对象去访问。在类的非静态成员不存在的时候静态方法就已经存在了此时调用在内存中还不存在的非静态成员属于非法操作。 
7.3、重载和重写的区别 
重载同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。重写子类对父类方法的重新改造外部样子不能改变内部实现逻辑可以改变。 
8、面向对象基础 
8.1、面向对象和面向过程的区别 
面向过程把解决问题的过程拆成一个个方法通过一个个方法的执行解决问题。面向对象是一种“万物皆对象”的编程思想任何物体都可以归为一类事物而每一个个体都是一类事物的实例通过调用对象的方法来解决问题。 
8.2、创建一个对象用什么运算符?对象实体与对象引用有何不同? 用new 运算符new 创建对象实例对象实例在堆内存中对象引用指向对象实例存放在栈内存中。 
一个对象引用可以指向 0 个或 1 个对象一根绳子可以不系气球也可以系一个气球一个对象可以有 n 个引用指向它可以用 n 条绳子系住一个气球。 
8.3、对象的相等和引用相等的区别 
对象相等一般比较的是内存中存放的内容是否相等。引用相等一般比较的是指向的内存地址是否相等。 
例如 
String str1  hello;
String str2  new String(hello);
String str3  hello;
// 使用  比较字符串的引用相等
System.out.println(str1  str2);
System.out.println(str1  str3);
// 使用 equals 方法比较字符串的相等
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3)); 
上述代码执行结果为 结果分析由于比较的是引用相等str2字符串会重新new一个string对象因此引用和str1不同str3会优先去字符串常量池寻找有无“hello”这个字符串有的话就直接引用它所以str3和str1引用相等。而最后两个比较的是字符串内容是否相等故str1、str2、str3都相等。         
8.4、构造函数是什么能否被override类没有声明构造方法程序还能正确执行吗? 构造方法是一种特殊的方法主要作用是完成对象的初始化工作。构造函数可以被重载(overload)但不能被重写(override)。 当一个类没有声明构造方法程序也是可以正常执行的。 当没有显式声明构造方式时类会默认声明一个无参构造函数。但如果我们自己添加了类的构造方法无论是否有参Java 就不会添加默认的无参构造方法了。 
8.5、面向对象三大特征 
封装把数据和操作数据的方法封装起来对数据的访问只能通过已定义的接口。 可以类比平常生活的开车汽车的底层结构被封装起来我们无需关心底层只需要会踩油门、转动方向盘开车即可。继承继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类得到继承信息的被称为子类。 父类中的私有属性和方法子类是无法访问只是拥有。多态一个对象具有多种状态具体表现为父类的引用指向子类的实例。 多态存在的3个必要条件: 要有继承关系 、要有方法的重写、父类引用指向子类对象。 
8.6、接口和抽象类有什么共同点和区别 抽象类和普通类类似只是无法实例化存在的意义就是让其他类继承的。抽象类可以包含抽象方法和非抽象方法其中抽象方法没有具体的实现而非抽象方法有具体的实现代码。接口是一种定义了一组方法签名的集合这些方法默认都是公共的抽象方法不包含具体的实现代码比抽象类更加抽象。 
共同点 
都不能被实例化。存在的意义就是被继承或实现都包含抽象方法。抽象类也可以没有抽象方法只要有abstract关键字修饰但是没意义 
不同点 
用途 接口主要用于限制类的行为实现了某个接口就具有了对应的行为。抽象类主要用于代码复用。抽象类中可以定义构造函数接口不能定义构造函数一个类只能继承一个类但是可以实现多个接口。 
8.7、深拷贝和浅拷贝的区别什么是引用拷贝 
浅拷贝只复制指向某个对象的指针而不复制对象本身新旧对象还是共享同一块内存。深拷贝会创造一个一模一样的对象新旧对象不共享内存修改新对象不会影响到原对象。 
9、Object类 
9.1、Object 类的常见方法有哪些 Object 类是一个特殊的类是所有类的父类。它主要提供了以下 11 个方法 
/*** native 方法用于返回当前运行时对象的 Class 对象使用了 final 关键字修饰故不允许子类重写。*/
public final native Class? getClass()
/*** native 方法用于返回对象的哈希码主要使用在哈希表中比如 JDK 中的HashMap。*/
public native int hashCode()
/*** 用于比较 2 个对象的内存地址是否相等String 类对该方法进行了重写以用于比较字符串的值是否相等。*/
public boolean equals(Object obj)
/*** native 方法用于创建并返回当前对象的一份拷贝。*/
protected native Object clone() throws CloneNotSupportedException
/*** 返回类的名字实例的哈希码的 16 进制的字符串。建议 Object 所有的子类都重写这个方法。*/
public String toString()
/*** native 方法并且不能重写。唤醒一个在此对象监视器上等待的线程(监视器相当于就是锁的概念)。如果有多个线程在等待只会任意唤醒一个。*/
public final native void notify()
/*** native 方法并且不能重写。跟 notify 一样唯一的区别就是会唤醒在此对象监视器上等待的所有线程而不是一个线程。*/
public final native void notifyAll()
/*** native方法并且不能重写。暂停线程的执行。注意sleep 方法没有释放锁而 wait 方法释放了锁 timeout 是等待时间。*/
public final native void wait(long timeout) throws InterruptedException
/*** 多了 nanos 参数这个参数表示额外时间以纳秒为单位范围是 0-999999。 所以超时的时间还需要加上 nanos 纳秒。。*/
public final void wait(long timeout, int nanos) throws InterruptedException
/*** 跟之前的2个wait方法一样只不过该方法一直等待没有超时时间这个概念*/
public final void wait() throws InterruptedException
/*** 实例被垃圾回收器回收的时候触发的操作*/
protected void finalize() throws Throwable { }9.2、 和 equals() 的区别 
“”由于 Java 只有值传递所以对于  来说不管是比较基本数据类型还是引用数据类型的变量其本质比较的都是值只是引用类型变量存的值是对象的地址。因此  对于基本数据类型来说比较的是值对于引用数据类型来说比较的是内存地址。equals()如果类没有重写equals方法等价于“”的效果如果重写了则比较的是对象的属性是否相等。 
9.3、为什么重写 equals() 时必须重写 hashCode() 方法 如果不同时重写的话可能会出现以下情况set集合中出现两个相同的对象即无法去重。 原因set集合在进行去重操作时会先判断两个对象的hashcode是否相等如果不重写hashcode()方法就会调用object中的hashcode()方法返回的是对象内存地址的哈希码这就意味着两个内容相同的对象其哈希码会由于内存地址的不同而不同。 两个内容相同的对象哈希码不同则默认这两个对象不同都会插入到set集合中导致set集合有重复对象。 
10、String类 
10.1、String 为什么是不可变的? 
字符串常量池 Java内存中存在一个字符串常量池是存储字符串对象的特殊内存区域。当创建一个字符串时如果该字符串已经存在于字符串常量池中那么就会直接返回这个字符串的引用如果不存在则会将该字符串添加到字符串常量池中并返回新创建的字符串的引用。由于字符串常量池的存在多个字符串可以共享同一个实例这样可以节省内存空间。而如果 String 是可变的那么在修改字符串时会导致其他使用相同字符串的地方出问题。安全性 由于String不可变因此其在多线程环境下是安全的。缓存哈希值 String 类重写了 hashCode()方法并且在第一次调用时计算并缓存了字符串的哈希值。由于 String 是不可变的所以可以保证哈希值的唯一性和一致性。 
10.2、String、StringBuffer、StringBuilder 的区别 
可变性 String 用于表示字符串属于不可变类。所以每次对String进行修改都会创建一个新的String对象导致频繁的内存分配和回收影响性能。Java提供了StringBuffer 和 StringBuilder两个可变的字符串用于高效地进行字符串的操作。原理 String 内部使用字符数组来保存字符串内容并且该数组是 final 修饰的当对 String 进行修改时会创建一个新的 String 对象StringBuffer 内部也使用字符数组来保存字符串内容但是该数组没有被 final 修饰当对 StringBuffer 进行修改时直接在原有的字符数组上进行操作不会创建新的对象。StringBuilder 的实现原理与 StringBuffer 相同唯一的区别是 StringBuilder 不是线程安全的而 StringBuffer 是线程安全的。 
10.3、String s1  new String(abc);这句话创建了几个字符串对象 
分情况 
如果字符串常量池无该对象那么会堆中创建两个字符串对象一个存在字符串常量池中。如果字符串常量池有该对象那么只会在堆中创建一个字符串对象。 
10.4、String#intern 方法有什么作用? intern 是一个 native本地方法其作用是将指定的字符串对象的引用保存在字符串常量池中可以简单分为两种情况 
如果字符串常量池中保存了对应的字符串对象的引用就直接返回该引用。如果字符串常量池中没有保存了对应的字符串对象的引用那就在常量池中创建一个指向该字符串对象的引用并返回。 
10.5、String 类型的变量和常量做“”运算时发生了什么 
当字符串不加 final 关键字拼接时 
String str1  str;
String str2  ing;
String str3  str  ing;
String str4  str1  str2;
String str5  string;
System.out.println(str3  str4);//false
System.out.println(str3  str5);//true
System.out.println(str4  str5);//false执行结果分析首先明确一点 对于编译期可以确定值的字符串也就是常量字符串 jvm 会将其存入字符串常量池。并且字符串常量拼接得到的字符串常量在编译阶段就已经被存放字符串常量池这个得益于编译器的优化。 因此上述代码中除了str4的其余字符串都已经存入到字符串常量池中而str4涉及到两个字符串的拼接底层会在堆中创建一个新的对象所以str4和其他字符串的比较都为false。 
不过当字符串使用 final 关键字声明之后可以让编译器当做常量来处理 
final String str1  str;
final String str2  ing;
// 下面两个表达式其实是等价的
String c  str  ing;// 常量池中的对象
String d  str1  str2; // 常量池中的对象
System.out.println(c  d);// true11、异常 
Java 异常类层次结构图概览 11.1、Exception 和 Error 的区别 
Exception程序本身可以处理的异常可以通过catch来获取Exception又可以细分为受检查异常和不受检查异常。Error属于程序无法处理的错误。 
11.2、Checked Exception 和 Unchecked Exception的区别 
Checked Exception即受检查异常Java 代码在编译过程中如果受检查异常没有被 catch或者throws 关键字处理的话就没办法通过编译。除了RuntimeException及其子类以外其他的Exception类及其子类都属于受检查异常 。常见的受检查异常有IO 相关的异常、ClassNotFoundException、SQLException...。Unchecked Exception即不受检查异常Java 代码在编译过程中 我们即使不处理不受检查异常也可以正常通过编译。RuntimeException 及其子类统称为不受检查异常常见的有 NullPointerException(空指针错误)ArrayIndexOutOfBoundsException数组越界错误ClassCastException类型转换错误IllegalArgumentException(参数错误比如方法入参类型错误)NumberFormatException字符串转换为数字格式错误ArithmeticException算术错误SecurityException 安全错误比如权限不够UnsupportedOperationException(不支持的操作错误比如重复创建同一用户) 
11.3、Throwable 类常用方法有哪些 
String getMessage(): 返回异常发生时的简要描述String toString(): 返回异常发生时的详细信息String getLocalizedMessage(): 返回异常对象的本地化信息。使用 Throwable 的子类覆盖这个方法可以生成本地化信息。如果子类没有覆盖该方法则该方法返回的信息与 getMessage()返回的结果相同void printStackTrace(): 在控制台上打印 Throwable 对象封装的异常信息 
11.4、try-catch-finally 如何使用 
try块用于捕获异常。其后可接零个或多个 catch 块如果没有 catch 块则必须跟一个 finally 块。catch块用于处理 try 捕获到的异常。finally 块无论是否捕获或处理异常finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时finally 语句块将在方法返回之前被执行。 
11.5、finally 中的代码一定会执行吗 不一定在某些情况下finally 中的代码不会被执行如 
在执行finally的代码之前虚拟机被终止了。程序所在的线程死亡。关闭CPU。 
11.6、如何使用 try-with-resources 代替try-catch-finally try-with-resources 是 Java 7 引入的一种语法结构用于自动关闭实现了 AutoCloseable 接口的资源。它可以代替传统的 try-catch-finally 结构来处理资源的释放。 
优点 
简化了代码结构不再需要显式地编写 finally 块来关闭资源。自动确保资源的正确关闭无论是否发生异常都会自动调用资源的 close() 方法进行关闭。支持多个资源同时关闭可以在 try 后面的括号内声明多个资源并按照声明顺序逆序关闭。 
12、泛型的使用方式有哪几种 使用泛型可以增加代码的灵活性和安全性使得代码更加通用和易于维护。 
泛型类定义一个类时可以在类名后面加上尖括号并在其中指定类型参数。泛型接口与泛型类类似可以在接口名后面加上尖括号并在其中指定类型参数。然后在实现该接口时需要指定具体的类型。泛型方法即在方法返回值前面加上尖括号并在其中指定类型参数。 
13、反射 
13.1、反射的使用 反射是java语言的一个特性它允程序在运行时动态获取和调用类的属性和方法。 要使用反射需要先获取类的class对象(字节码对象)有三种方式 
Class.forName(全类名);类名.class;类实例对象.getClass() 接下来就可以通过具体的API调用获取到详细的属性或者方法 
获取构造函数getConstructors()等方法。获取类成员变量getFields()等方法。获取类成员方法getMethods()等方法。 
13.2、反射的应用场景 Spring 框架的 IOC动态加载管理 Bean、加载数据库驱动 Class.forName(com.mysql.cj.jdbc.Driver); 、IDEA的方法提醒都需要用到反射机制。  
14、注解的解析方法有哪几种 注解只有被解析之后才会生效常见的解析方法有两种 
编译期直接扫描编译器在编译 Java 代码的时候扫描对应的注解并处理比如某个方法使用Override 注解编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理像框架中自带的注解(比如 Spring 框架的 Value、Component)都是通过反射来进行处理的。 
15、什么是序列化?什么是反序列化? 如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中或者在网络传输 Java 对象这些场景都需要用到序列化。 
简单来说 
序列化将数据结构或对象转换成二进制字节流的过程。反序列化将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。 序列化协议对应于OSI 七层协议模型中表示层。 对于不想进行序列化的变量使用 transient 关键字修饰。 
transient 只能修饰变量不能修饰类和方法。static 变量不属于任何对象(Object)所以无论有无 transient修饰均不会被序列化。 
16、I/O流 I/O即Input/Output数据输入到计算机内存的过程即输入反之输出到外部存储比如数据库文件远程主机的过程即输出。数据传输过程类似于水流因此称为 IO 流。IO 流在 Java 中分为输入流和输出流而根据数据的处理方式又分为字节流和字符流。 Java I/O流中有四个抽象类基类其架构如下图 字节流适合传输所有类型的文件如音频、视频、图片、文本文件的复制转移等。字符流只适合传输纯文本文件如txt、java文件等。 
字节缓冲流 字节流在调用 write(int b) 和 read() 方法的时候一次只能读取一个字节。由于字节缓冲流内部有缓冲区字节数组因此字节缓冲流会先将读取到的字节存放在缓存区大幅减少 IO 次数提高读取效率。 
Java 中 3 种常见 IO 模型 BIO (Blocking I/O)同步阻塞 IO 模型中应用程序发起 read 调用后会一直阻塞直到内核把数据拷贝到用户空间。在高并发场景下效率较低。  NIO (Non-blocking I/O)同步非阻塞 IO 模型应用程序会一直发起 read 调用等待数据从内核空间拷贝到用户空间的这段时间里线程依然是阻塞的直到在内核把数据拷贝到用户空间。通过轮询操作避免了一直阻塞但是不断发起调用消耗大量cpu资源。  AIO (Asynchronous I/O)异步 IO 模型应用操作之后会直接返回不会堵塞在那里当后台处理完成操作系统会通知相应的线程进行后续的操作。   文章转载自: http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.lrprj.cn.gov.cn.lrprj.cn http://www.morning.znqztgc.cn.gov.cn.znqztgc.cn http://www.morning.tkgjl.cn.gov.cn.tkgjl.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.mbprq.cn.gov.cn.mbprq.cn http://www.morning.mgkb.cn.gov.cn.mgkb.cn http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn http://www.morning.zrlwl.cn.gov.cn.zrlwl.cn http://www.morning.fksxs.cn.gov.cn.fksxs.cn http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.yrfxb.cn.gov.cn.yrfxb.cn http://www.morning.nsncq.cn.gov.cn.nsncq.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.xckrj.cn.gov.cn.xckrj.cn http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn http://www.morning.vehna.com.gov.cn.vehna.com http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.srrrz.cn.gov.cn.srrrz.cn http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.jxscp.cn.gov.cn.jxscp.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.fmrd.cn.gov.cn.fmrd.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn http://www.morning.jwdys.cn.gov.cn.jwdys.cn http://www.morning.ljzss.cn.gov.cn.ljzss.cn http://www.morning.bsqkt.cn.gov.cn.bsqkt.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.benqc.com.gov.cn.benqc.com http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.pngph.cn.gov.cn.pngph.cn http://www.morning.jfbrt.cn.gov.cn.jfbrt.cn http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn http://www.morning.chongzhanggui.cn.gov.cn.chongzhanggui.cn http://www.morning.hdlhh.cn.gov.cn.hdlhh.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.yjxfj.cn.gov.cn.yjxfj.cn http://www.morning.wjndl.cn.gov.cn.wjndl.cn http://www.morning.bdypl.cn.gov.cn.bdypl.cn http://www.morning.nhzps.cn.gov.cn.nhzps.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.dsncg.cn.gov.cn.dsncg.cn http://www.morning.zlhzd.cn.gov.cn.zlhzd.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn http://www.morning.wnnfh.cn.gov.cn.wnnfh.cn http://www.morning.ypktc.cn.gov.cn.ypktc.cn http://www.morning.flpjy.cn.gov.cn.flpjy.cn http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn http://www.morning.wjplm.cn.gov.cn.wjplm.cn http://www.morning.gqwbl.cn.gov.cn.gqwbl.cn http://www.morning.cmldr.cn.gov.cn.cmldr.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn http://www.morning.rjhts.cn.gov.cn.rjhts.cn http://www.morning.fncgw.cn.gov.cn.fncgw.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.nckjk.cn.gov.cn.nckjk.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.rggky.cn.gov.cn.rggky.cn http://www.morning.slwfy.cn.gov.cn.slwfy.cn http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn http://www.morning.jpkk.cn.gov.cn.jpkk.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.qstjr.cn.gov.cn.qstjr.cn http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn