766培训网
电脑培训
Java字符流和字节流的区别

Java字符流和字节流的区别

发布时间 :2021-04-06 16:27:37 浏览量:0 收藏
导读:

字节流执行的8位字节输入和输出的机制,基本单元为字节;而字符流是Java中执行16位Unicode输入和输出操作的机制,基本单元为Unicode码元。

Java字符流和字节流的区别

Java字符流和字节流的区别

字节流是一种执行8位字节输入和输出的机制,基本单元为字节;而字符流是Java中执行16位Unicode输入和输出操作的机制,基本单元为Unicode码元。

字节流以stream结尾;而字符流以reader和writer结尾

字节流是最基本的,采用ASCII编码;它通常用于处理二进制数据,它是按字节来处理的,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元。

字符流采用Unicode编码,它是按虚拟机的encode来处理,也就是要进行字符集的转化;它通常处理文本数据,它支持写入及读取Unicode码元。

字节流默认不使用缓冲区;字符流使用缓冲区。

Java中comparable和comparator的区别

确定两个对象之间的大小关系及排列顺序称为比较,能实现这个比较功能的类或方法称之为比较器,在java中有两种比较器。

内部比较器(Comparable接口)和外部比较器(Comparator接口)

1、比较器排序Comparator的使用——可以看做是类(对象)外部比较器(实现Comparator接口)。

简单点说就是把比较器写在类的外边,没错!就是在外边新定义了个比较器类!

新定义一个类,类名随意,但这个类必须实现Comparator接口,重写compare方法,我们把这个称作外部比较器。

2、自然排序Comparable的使用——类(对象)内部比较器(实现Comparable接口):简单点说就是把比较器写在类的内部。

类(对象)实现了Comparable接口,然后重写了compareTo方法(这个方法可以看作比较器),这个类就拥有了内部比较器。注意,一旦实现了比较器,就说明这个类支持排序。

Java如何创建线程

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用三种方式来创建线程,如下所示:继承Thread类创建线程;实现Runnable接口创建线程;使用Callable和Future创建线程。

1、继承Thread类创建线程步骤如下:

(1)d定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体。

(2)创建Thread子类的实例,也就是创建了线程对象。

(3)启动线程,即调用线程的start()方法。

2、实现Runnable接口创建线程步骤如下:

(1)定义Runnable接口的实现类,一样要重写run()方法,这个run()方法和Thread中的run()方法一样是线程的执行体。

(2)创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象。

(3)第三部依然是通过调用线程对象的start()方法来启动线程。

3、使用Callable和Future创建线程步骤如下:

(1)创建Callable接口的实现类,并实现call()方法,然后创建该实现类的实例(从java8开始可以直接使用Lambda表达式创建Callable对象)。

(2)使用FutureTask类来包装Callable对象,该FutureTask对象封装了Callable对象的call()方法的返回值。

(3)使用FutureTask对象作为Thread对象的target创建并启动线程(因为FutureTask实现了Runnable接口)。

(4)调用FutureTask对象的get()方法来获得子线程执行结束后的返回值。