Java 基础语法1(StringBuffer,Runtime,Date)

一、`StringBuffer`常用方法详解


方法:`append(String str)`
功能说明:追加字符串、基本类型(自动转换)或对象(调用`toString()`)到末尾。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // "Hello World"

方法:`insert(int offset, String str)`
功能说明:在指定位置插入内容,支持多种数据类型。
sb.insert(5, ","); // "Hello, World"

方法:`delete(int start, int end)`
功能说明:删除区间`[start, end)`的字符。
sb.delete(5, 6); // "Hello World"

方法:`replace(int start, int end, String str)`
功能说明:替换指定区间的字符为新字符串。
sb.replace(6, 11, "Java"); // "Hello Java"

方法:`reverse()`
功能说明:反转当前字符序列。
sb.reverse(); // "avaJ olleH"

方法:`charAt(int index)`
功能说明:返回指定索引的字符。
char c = sb.charAt(0); // 'a'

方法:`substring(int start, int end)`
功能说明:提取子字符串(返回`String`类型)。
String sub = sb.substring(0, 5); // "avaJ "

方法:`setLength(int newLength)`
功能说明:强制设置字符序列长度,超出部分截断,不足部分填充空字符(`\u0000`)。
sb.setLength(10); // 调整长度

二、`Runtime`常用方法与功能


方法:`availableProcessors()`
功能说明:返回可用 CPU 核心数,用于并发任务分配优化。
int cores = Runtime.getRuntime().availableProcessors();

方法:`totalMemory()`/`freeMemory()`
功能说明:获取 JVM 已分配内存总量和剩余内存(单位:字节)。
long total = Runtime.getRuntime().totalMemory();
long free = Runtime.getRuntime().freeMemory();

方法:`gc()`
功能说明:主动触发垃圾回收,释放未使用内存(非强制)。
Runtime.getRuntime().gc();

方法:`exec(String command)`
功能说明:执行系统命令(如启动程序、调用脚本)。
Process p = Runtime.getRuntime().exec("notepad.exe");

方法:`addShutdownHook(Thread hook)`
功能说明:注册关闭钩子,JVM 终止前执行指定线程任务(如资源释放)。
Runtime.getRuntime().addShutdownHook(new Thread(() -> System.out.println("清理完成")));

三、`Date`核心概念

`java.util.Date`是 Java 早期用于表示时间点的核心类,记录自1970年1月1日 00:00:00 GMT(纪元时间)起的毫秒偏移量。其主要特点包括:

• 时间精度:精确到毫秒级,但无法表示纳秒级时间。

• 可变性:`Date`对象创建后可通过`setTime()`修改时间值,可能导致线程安全问题。


四、`Date`核心方法


方法:`new Date()`
功能说明:创建表示当前时间的`Date`对象。
Date now = new Date();

方法:`new Date(long millis)`
功能说明:通过纪元时间偏移量(毫秒)创建`Date`对象。
Date date = new Date(1690000000000L);

方法:`getTime()`
功能说明:返回自纪元时间起的毫秒数(等价于`System.currentTimeMillis()`)。
long timestamp = date.getTime();

方法:`before(Date when)`
功能说明:判断当前时间是否早于参数时间。
if (date1.before(date2)) { ... }

方法:`after(Date when)`
功能说明:判断当前时间是否晚于参数时间。
if (date1.after(date2)) { ... }

方法:`compareTo(Date other)`
功能说明:比较两个时间点,返回正数、零或负数(类似`Comparable`接口实现)。
int result = date1.compareTo(date2);

五、`Date`使用场景


1.快速获取时间戳
通过`new Date().getTime()`或`System.currentTimeMillis()`获取当前毫秒级时间戳:
long timestamp = new Date().getTime();  // 等价于 System.currentTimeMillis()

2.旧系统兼容
在遗留代码中解析或生成日期数据时,需使用`Date`与`SimpleDateFormat`配合:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatted = sdf.format(new Date());  // 输出:2025-04-24 14:30:45

3.基础时间比较
使用`before()`、`after()`或`compareTo()`进行简单时间点对比:
Date deadline = new Date(1745510400000L);  // 2025-04-25 00:00:00
if (new Date().before(deadline)) {
    System.out.println("未超期");
}

4.时区问题
`Date`内部存储的是 GMT 时间,但`toString()`显示时依赖系统默认时区:
Date date = new Date();
System.out.println(date);  // 输出格式:Thu Apr 24 14:30:45 CST 2025(CST 为系统时区)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值