Java

Io Programming

输入流和输出流

输入流(InputStream)

输入流用于从数据源读取数据。常见的数据源包括文件、网络连接、内存中的字节数组等。InputStream 是所有字节输入流的基类,它定义了一些基本的方法,具体的子类实现了这些方法以适应不同的数据源。

输出流(OutputStream)

输出流用于将数据写入目标位置。常见的目标位置包括文件、网络连接、内存中的字节数组等。OutputStream 是所有字节输出流的基类,它定义了一些基本的方法,具体的子类实现了这些方法以适应不同的目标位置。

File文件操作

初识

java.io.File类是一个与文件本身操作有关的类,此类可以实现文件创建、删除、重命名、取得文件大小、修改日期等常见系统文件操作

如果要使用File类则必须提供完整的文件操作路径,对于文件路径的设置可以通过File类的构造方法完成,当获取了正确的文件路径后就可以进行文件创建于删除操作、File类文件基本操作方法

No. 方法 类型 描述
1 public File(String pathname) 构造 给定一个要操作文件的完整路径
2 public File(File parent,String child) 构造 给定要操作文件的父路径和子文件名称
3 public boolean createNewFile() throws IOException 普通 创建文件
4 public boolean delete() 普通 删除文件
5 public boolean exists() 普通 判断给定路径是否存在

示例

import java.io.File;
public class JavaIODemo{
	public static void main(String[] args) throws Exception{
		File file = new File("D:\\1.txt"); //文件路径: "\\"转义为"\"
		if(file.exists()){
			file.delete();
		}
		else{
			System.out.println(file.createNewFile());
		}
	}
}

分隔符

windows中是"\" 而在UNIX或类UNIX操作系统中路径分隔符是"/"

Read more >

Java常用类库

StringBuffer类

String和StringBuffer的区别

String

  • 不可变性String 类是不可变的,这意味着一旦创建了一个 String 对象,其值就不能改变。每次对 String 进行修改(如连接、替换等操作)都会产生新的 String 对象,原来的对象不会被改变。
  • 线程安全性:由于 String 的不可变性,它是线程安全的,可以被多个线程共享而无需担心数据一致性的问题。
  • 性能:因为每次修改都会创建新的对象,所以在频繁进行字符串操作时,String 的效率较低。

StringBuffer

  • 可变性StringBuffer 是一个可变的字符序列,可以被多次修改而不创建新的对象。这意味着如果需要对字符串进行大量的修改操作,使用 StringBuffer 比使用 String 更加高效。
  • 线程安全性StringBuffer 是线程安全的。它的方法都是同步的(即加了 synchronized 关键字),这使得 StringBuffer 可以在多线程环境中安全地使用,但是也导致了它的性能相比非线程安全的 StringBuilder 要差一些。
  • 性能:当需要在一个单线程环境下进行大量字符串操作时,StringBuffer 仍然不是最优选择,因为它的线程安全特性会带来额外的开销。在这种情况下,应该考虑使用 StringBuilder

使用场景

  • 使用 String:当你不需要修改字符串内容时,或者修改次数非常少的时候,使用 String 是合适的。此外,String 的不可变性和线程安全性使其成为多线程环境中的首选。
  • 使用 StringBuffer:如果你的应用程序需要在多线程环境中频繁地修改字符串,那么 StringBuffer 是一个很好的选择,因为它提供了线程安全的操作。
  • 使用 StringBuilder:对于单线程环境下的频繁字符串操作,推荐使用 StringBuilder,因为它比 StringBuffer 性能更高,同时又保持了可变性的优点。

StringBuffer介绍

String类自身有一个最大的缺陷:内容一旦声明则不可改变,JDK为了方便用户修改字符串内容提供了StringBuffer类

StringBuffer类不像String类那样可以直接通过声明字符串常量方式进行实例化,而是必须像普通类对象使用一样,首先通过构造方法进行对象实例化,而后才可以调用方法进行处理。

No. 方法 类型 描述
1 public StringBuffer() 构造 创建一个空的StringBuffer对象
2 public StringBuffer(String str) 构造 将接受到的String内容变为StringBuffer内容
3 public StringBuffer append(数据类型 变量) 普通 内容连接,等价于String中:”+”操作
4 public StringBuffer insert(int offset,数据类型 变量) 普通 在指定索引位置处插入数据
5 public StringBuffer delete(int start,int end) 普通 删除指定索引范围之内的数据
6 public StringBuffer reverse() 普通 内容反转

示例

Read more >

Java Base

java文件结构快速了解

Java 文件的基本结构

一个简单的Java文件通常包含以下几个部分:

  1. 包声明

    • 每个Java源文件都属于某个包。包的作用类似于文件夹,用于组织和分类相关的类。
    • 示例:package com.example;
  2. 导入语句

    • 导入语句用于引入其他包中的类或接口,这样可以在当前文件中直接使用这些类或接口。
    • 示例:import java.util.ArrayList;
  3. 类声明

    • 类是Java程序的基本构建块。每个类定义了一组属性(变量)和方法(函数)。

    • 示例:

      public class HelloWorld {
          // 类体
      }
      
  4. 构造方法

    • 构造方法是一种特殊的方法,用于创建类的新实例时初始化对象。

    • 示例:

      public HelloWorld() {
          // 初始化代码
      }
      
  5. 属性(成员变量)

    • 属性是类中存储数据的变量。

    • 示例:

      private String name;
      
  6. 方法

    • 方法是执行特定任务的代码块。

    • 示例:

      public void sayHello() {
          System.out.println("Hello, World!");
      }
      
  7. 主方法(main方法)

    • 主方法是Java应用程序的入口点。当程序启动时,JVM会寻找并执行这个方法。

    • 示例:

      java深色版本

      public static void main(String[] args) {
          HelloWorld hello = new HelloWorld();
          hello.sayHello();
      }
      

示例代码

以下是一个完整的Java文件示例,结合了上述各个部分:

Read more >