当前位置: 首页 > news >正文

面试(四)——Java 八大包装类、String 、日期类及文件操作核心类 File全解析

       在 Java 编程世界里,有许多核心类在数据处理、文件操作等场景中扮演着关键角色。下面我们将详细介绍八大包装类、String 及日期类,还有文件操作核心类 File,帮助大家全方位掌握这些重要工具。

一、八大包装类

       Java 为基本数据类型提供了对应的包装类,使得基本数据类型可以像对象一样参与面向对象的操作(如泛型、集合操作等)。八大基本数据类型及其对应的包装类如下:

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

(一)包装类的主要作用

  1. 装箱与拆箱
    • 装箱:将基本数据类型转换为对应的包装类对象。例如:
int num = 10;
Integer integer = Integer.valueOf(num); // 手动装箱,也可直接写 Integer integer = num;(自动装箱)
  • 拆箱:将包装类对象转换为对应的基本数据类型。例如:
Integer integer = new Integer(20);
int num = integer.intValue(); // 手动拆箱,也可直接写 int num = integer;(自动拆箱)

       自动装箱和拆箱是 Java 5 及以后版本提供的特性,让基本数据类型和包装类之间的转换更加便捷。

     2. 类型转换与操作

       包装类提供了大量的方法,用于基本数据类型与字符串之间的转换,以及对数据的各种操作。比如 Integer.parseInt("123") 可以将字符串 "123" 转换为 int 类型的 123Integer.toBinaryString(5) 可以将整数 5 转换为二进制字符串 "101"

二、String 字符串

       String 类用于表示字符串,它是不可变的,即一旦创建,其值就不能被修改。每次对 String 对象进行操作(如拼接、替换等),都会生成一个新的 String 对象。

(一)常用方法

  1. 字符串拼接:可以使用 + 运算符或者 concat() 方法。例如:
String str1 = "Hello";
String str2 = "World";
String result = str1 + str2; // 结果为 "HelloWorld"
String result2 = str1.concat(str2); // 结果也为 "HelloWorld"
  1. 字符串查找与截取indexOf() 方法用于查找子字符串的位置,substring() 方法用于截取子字符串。例如:
String str = "Java Programming";
int index = str.indexOf("Program"); // 返回 5,因为 "Program" 从索引 5 开始
String subStr = str.substring(5); // 返回 "Programming"
  1. 字符串替换与分割replace() 方法用于替换字符或子字符串,split() 方法用于分割字符串。例如:
String str = "Hello,Java,World";
String newStr = str.replace(",", "-"); // 结果为 "Hello-Java-World"
String[] parts = str.split(","); // 分割为 ["Hello", "Java", "World"]

(二)可变字符串

由于 String 是不可变的,当需要频繁对字符串进行修改操作时,使用 String 会产生大量中间对象,影响性能。这时可以使用可变字符串类 StringBuilder 和 StringBuffer

  1. StringBuilder:非线程安全,效率高,适用于单线程环境下的字符串拼接等操作。例如:
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString(); // 结果为 "Hello World"
  1. StringBuffer:线程安全,效率相对较低,适用于多线程环境下的字符串操作。其用法与 StringBuilder 类似。

三、日期类(Date)

  java.util.Date 类用于表示特定的瞬间,精确到毫秒。

(一)常用构造方法和方法

  • 构造方法Date() 构造一个表示当前时间的 Date 对象;Date(long date) 构造一个表示从 1970 年 1 月 1 日 00:00:00 GMT 开始经过 date 毫秒的 Date 对象。
Date now = new Date(); // 表示当前时间
Date past = new Date(1000); // 表示从 1970-01-01 00:00:00 GMT 开始 1000 毫秒后的时间
  • 获取时间相关信息:可以使用 getTime() 方法获取从 1970 年 1 月 1 日 00:00:00 GMT 到该 Date 对象所表示时间的毫秒数。
Date date = new Date();
long time = date.getTime();

(二)SimpleDateFormat 类

  Date 类本身的格式化输出功能有限,通常结合 SimpleDateFormat 类来对日期进行格式化和解析。

  • 日期格式化:将 Date 对象格式化为指定格式的字符串。例如:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(date);
System.out.println(formattedDate); // 输出类似 2023-10-25 15:30:45 的日期时间字符串
  • 日期解析:将符合指定格式的字符串解析为 Date 对象。例如:
String dateStr = "2023-10-25 15:30:45";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {Date date = sdf.parse(dateStr);System.out.println(date);
} catch (ParseException e) {e.printStackTrace();
}

(三)Java 8 新日期时间 API

       需要注意的是,Date 类在 Java 中存在一些设计上的不足,Java 8 引入了新的日期时间 API(位于 java.time 包下),如 LocalDateLocalTimeLocalDateTimeDateTimeFormatter 等,这些类提供了更简洁、易用且线程安全的日期时间处理方式,在新的开发中更推荐使用。

四、文件操作核心类 File

       在 Java 编程中,对文件和目录的操作是很常见的需求。java.io.File 类为我们提供了一系列方法,用于操作文件和目录的元数据(如名称、路径、大小、修改时间等),以及创建、删除文件或目录等操作。

(一)文件的构造器

File 类有多个构造方法,常用的有以下几种:

  • File(String pathname)通过指定文件或目录的路径名字符串来创建 File 对象。路径可以是绝对路径(如 C:\Users\xxx\file.txt),也可以是相对路径(相对于当前工作目录,如 test\file.txt)。示例:
File file = new File("D:\\test\\example.txt");
  • File(String parent, String child)通过指定父路径名字符串和子路径名字符串来创建 File 对象。这种方式可以更灵活地组合路径。示例:
File parentDir = new File("D:\\test");
File file = new File(parentDir, "example.txt");
  • File(File parent, String child)通过指定父 File 对象和子路径名字符串来创建 File 对象,和上面的构造方法类似,只是父路径是一个 File 对象。示例:
File parentDir = new File("D:\\test");
File file = new File(parentDir, "example.txt");

(二)文件的创建

  1. 创建文件使用 createNewFile() 方法可以创建一个新的空文件。如果文件所在的目录不存在,或者文件已经存在,该方法会返回 false,否则创建文件并返回 true。示例:
File file = new File("D:\\test\\newFile.txt");
try {boolean isCreated = file.createNewFile();if (isCreated) {System.out.println("文件创建成功");} else {System.out.println("文件创建失败,可能文件已存在或目录不存在");}
} catch (IOException e) {e.printStackTrace();
}

    2.创建目录

  • mkdir():创建单级目录,如果父目录不存在,则创建失败,返回 false。示例:
File dir = new File("D:\\test\\newDir");
boolean isCreated = dir.mkdir();
if (isCreated) {System.out.println("目录创建成功");
} else {System.out.println("目录创建失败,可能父目录不存在");
}
  • mkdirs():创建多级目录,即使父目录不存在,也会递归创建所有需要的父目录,创建成功返回 true,否则返回 false。示例:
File dir = new File("D:\\test\\dir1\\dir2");
boolean isCreated = dir.mkdirs();
if (isCreated) {System.out.println("多级目录创建成功");
} else {System.out.println("多级目录创建失败");
}

(三)文件的删除

  • 删除文件或空目录使用 delete() 方法可以删除文件或空目录。如果是文件,直接删除;如果是目录,必须保证该目录为空才能删除成功。删除成功返回 true,否则返回 false。示例:
File file = new File("D:\\test\\newFile.txt");
boolean isDeleted = file.delete();
if (isDeleted) {System.out.println("文件删除成功");
} else {System.out.println("文件删除失败,可能文件不存在或目录不为空");
}
  • 注意事项delete() 方法不会进入回收站,是直接从磁盘上删除文件或目录,所以使用时要格外小心,避免误删重要数据。

(四)文件的获取功能 API

  File 类提供了丰富的方法来获取文件或目录的各种信息,以下是一些常用的方法:

  1. 获取基本信息
  • getName():获取文件或目录的名称。示例:
File file = new File("D:\\test\\example.txt");
String name = file.getName();
System.out.println("文件名称:" + name); // 输出 example.txt
  • getPath():获取构造 File 对象时使用的路径字符串。示例:
File file = new File("D:\\test\\example.txt");
String path = file.getPath();
System.out.println("路径:" + path); // 输出 D:\test\example.txt
  • getAbsolutePath():获取文件或目录的绝对路径。示例:
File file = new File("test\\example.txt");
String absolutePath = file.getAbsolutePath();
System.out.println("绝对路径:" + absolutePath); 
// 输出类似 C:\Users\xxx\project\test\example.txt(取决于当前工作目录)
  • length():获取文件的长度(以字节为单位),如果是目录,返回值没有明确意义。示例:
File file = new File("D:\\test\\example.txt");
long length = file.length();
System.out.println("文件长度:" + length + " 字节");
  • lastModified():获取文件或目录最后一次修改的时间,返回值是从 1970 年 1 月 1 日 00:00:00 GMT 到修改时间的毫秒数。可以通过 new Date(lastModified()) 转换为日期对象。示例:
File file = new File("D:\\test\\example.txt");
long lastModifiedTime = file.lastModified();
Date date = new Date(lastModifiedTime);
System.out.println("最后修改时间:" + date);

    2.判断文件或目录属性

  • isFile():判断是否是文件。示例:
File file = new File("D:\\test\\example.txt");
if (file.isFile()) {System.out.println("这是一个文件");
} else {System.out.println("这不是一个文件");
}
  • isDirectory():判断是否是目录。示例:
File dir = new File("D:\\test");
if (dir.isDirectory()) {System.out.println("这是一个目录");
} else {System.out.println("这不是一个目录");
}
  • exists():判断文件或目录是否存在。示例:
File file = new File("D:\\test\\example.txt");
if (file.exists()) {System.out.println("文件或目录存在");
} else {System.out.println("文件或目录不存在");
}

    3.列出目录内容

  • list():返回目录下所有文件和目录的名称字符串数组,如果是文件或者目录不存在,返回 null。示例:
File dir = new File("D:\\test");
String[] names = dir.list();
if (names != null) {for (String name : names) {System.out.println(name);}
}
  • listFiles():返回目录下所有文件和目录的 File 对象数组,如果是文件或者目录不存在,返回 null。示例:
File dir = new File("D:\\test");
File[] files = dir.listFiles();
if (files != null) {for (File file : files) {System.out.println(file.getName() + ":" + (file.isFile() ? "文件" : "目录"));}
}

       掌握八大包装类、String、日期类以及 File 类的使用,能让你在 Java 数据处理、字符串操作、日期时间处理和文件操作等场景中更加得心应手。需要注意的是,File 类主要是对文件和目录的元数据进行操作,若要进行文件内容的读写,还需要结合输入输出流(如 FileInputStreamFileOutputStreamBufferedReaderBufferedWriter 等)来实现。

http://www.dtcms.com/a/511462.html

相关文章:

  • 【无标题】大模型-7种大模型微调方法 上
  • 信用网站系统建设方案阿里云服务器建设网站选择那个镜像
  • 大型的PC网站适合vue做吗网页制作工具通常在什么上建立热点
  • C++字符串操作与递增递减运算符详解
  • Python 的基本数据类型与它们之间的关系
  • All in One Runtimes下载和安装图解(附安装包,适合新手)
  • Python多patch装饰器使用指南
  • Prometheus监控系统
  • 【Java-集合】Set接口
  • 安卓开发- Log日志工具类
  • 微信链接的微网站怎么做的wordpress注册邮件设置密码
  • 国学大师网站谁做的wordpress dante
  • asp.net网站开发 vs2017手机网站分页
  • 传统决策vs AI决策:效率之争的底层逻辑与正确选择
  • SecurityContext在分布式系统(如微服务)中如何传递?有哪些常见方案?
  • MinIO与HDFS对比测试
  • SAP SD销售订单创建接口分享
  • rabbitMQ 的安装和使用
  • 华为Java专业级科目一通过心得
  • [Android] AutoCMD+ v.1.3.5:安卓自动化工具
  • 从养殖场到实验室:小吉快检BL-08plus如何实现禽病检测效率提升300%?——真实案例深度解析
  • 衡阳手机网站建设外发加工费计入什么科目
  • 【JUnit实战3_06】第三章:JUnit 的体系结构(下)
  • 使用injected Provider在remix中调试合约的坑 -- 时间(或者最新块)更新不及时
  • 丽水市莲都建设分局网站湖南微网站开发
  • 笔试-最小组合数
  • Web UI自动化时,通过autoIT的解决window控件
  • 电商网站建设建议网站前端交互功能案例分析
  • Qt——窗口
  • [人工智能-大模型-20]:对比 Copilot 与国产替代方案(如通义灵码、百度Comate)