一个网站怎么做提现自动到账网站怎么推广效果好一点呢
21. 什么是 Java 中的内部类?它有哪些类型?
Java 中的内部类是定义在另一个类内部的类。内部类能够访问其外部类的成员,包括那些声明为私有的成员。内部类是面向对象编程中的一个特色,可以用来逻辑上组织相关的类,并且可以增强封装性。
内部类大致可以分为以下四种类型:
-
成员内部类(Member Inner Class):
成员内部类是最普通的内部类,它像外部类的一个成员一样,可以访问外部类的所有成员变量和方法。即使是声明为private的成员也可以访问。成员内部类不能包含任何static变量或方法。class OuterClass {private String name;class InnerClass {public void displayName() {System.out.println(name);}} }
-
局部内部类(Local Inner Class):
局部内部类是定义在一个块中的类,例如一个方法或一个作用域块中。它们仅在该块执行时可见,并且只能使用final或effectively final的局部变量。public class OuterClass {public void someMethod() {final String name = "Local";class LocalInnerClass {public void displayName() {System.out.println(name);}}LocalInnerClass lic = new LocalInnerClass();lic.displayName();} }
-
匿名内部类(Anonymous Inner Class):
匿名内部类是没有名称的局部内部类。它通常用于扩展一个类或实现接口的一次性使用。匿名内部类不能有构造器,但可以包含初始化代码块。public class OuterClass {public void someMethod() {Thread thread = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Anonymous inner class as a Runnable");}});thread.start();} }
-
静态内部类(Static Nested Class):
静态内部类与其他内部类最大的不同是,它是静态的,可以包含静态成员。静态内部类通常用作与外部类关联的辅助类。它们不需要外部类实例即可实例化。class OuterClass {static class StaticNestedClass {public void displayInfo() {System.out.println("This is a static nested class");}} }
内部类提供了一种强大的方式来组织相关的类,同时保持代码的可读性和可维护性。通过内部类,可以更清晰地表示类之间的关系,并且可以隐藏不需要对外暴露的实现细节。
22. Java 中 IO 流分为几种?
在 Java 中,IO(输入/输出)流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。每一类又可以根据其功能分为输入流和输出流。
- 字节流(Byte Streams):
- 输入流(InputStream):用于从源数据源(如文件、网络等)读取数据。
- 输出流(OutputStream):用于向目标数据源(如文件、网络等)写出数据。
字节流主要包括以下类:
- InputStream 的子类:FileInputStream、ByteArrayInputStream、FilterInputStream(及其子类如 BufferedInputStream)、DataInputStream 等。
- OutputStream 的子类:FileOutputStream、ByteArrayOutputStream、FilterOutputStream(及其子类如 BufferedOutputStream)、DataOutputStream 等。
- 字符流(Character Streams):
- 输入流(Reader):用于从源数据源读取字符数据。
- 输出流(Writer):用于向目标数据源写出字符数据。
字符流主要包括以下类:
- Reader 的子类:FileReader、CharArrayReader、BufferedReader、InputStreamReader(用于转换字节流到字符流)等。
- Writer 的子类:FileWriter、CharArrayWriter、BufferedWriter、OutputStreamWriter(用于转换字符流到字节流)等。
此外,Java 还提供了用于序列化和反序列化对象的 ObjectInputStream 和 ObjectOutputStream,它们分别继承自 InputStream 和 OutputStream。
以下是一个简单的使用 FileInputStream 和 FileOutputStream 进行文件复制的代码示例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class FileCopy {public static void main(String[] args) {try (FileInputStream in = new FileInputStream("source.txt");FileOutputStream out = new FileOutputStream("destination.txt")) {byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}} catch (IOException e) {e.printStackTrace();}}
}
以上就是 Java 中 IO 流的基本分类及其简短描述。希望这个答案对您有所帮助。
【150 道精选 Java 高频面试题】请go公众号:码路向前 。