这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战
Java程序设计 CharSequence接口、AutoCloseable接口、Runtime类
CharSequence接口
描述字符串标准的接口
常见的子类有3个:String、StringBuffer、StringBuilder
CharSequence接口方法
| 方法 | 作用 |
|---|---|
| public char charAt(int index) | 获取指定索引字符 |
| public int length() | 获取字符串长度 |
| public CharSequence subSequence(int start,int end) | 截取部分字符串 |
public class Hello {
public static void main(String[] args) {
CharSequence str = "ABCDEFG";
CharSequence a = str.subSequence(0,3);
System.out.println(a);
}
}
大部分情况下都先考虑String,只有在频繁修改这一操作中才会考虑使用StringBuffer或StringBuilder
AutoCloseable接口
结合异常处理结构在资源操作完成后实现自动释放功能
接口定义:
public interface AutoCloseable {
public viod close() throws Exception;
}
演示:
public class Hello {
public static void main(String[] args) {
try(Mess n = new NetMess("ABCD")){
n.send();
}catch (Exception e){
e.printStackTrace();
}
}
}
interface Mess extends AutoCloseable {
public void send();
}
class NetMess implements Mess{
private String msg;
public NetMess(String msg){
this.msg=msg;
}
public boolean open(){
System.out.println("发送消息");
return true;
}
@Override
public void send() {
this.open();
System.out.println(this.msg);
}
@Override
public void close() throws Exception {
System.out.println("关闭通道");
}
}
实现了自动关闭处理,并且通过执行结果可以发现,不管是否产生了异常都会调用close()方法进行资源释放
Runtime类
Runtime描述的是运行时状态,在每一个JVM进程中都会提供唯一的一个Runtime类实例化对象,开发者可以通过Runtime类对象获取与JVM有关的运行时状态
常用方法
| 方法 | 作用 |
|---|---|
| public static Runtime getRuntime() | 获取Runtime类的实例化对象 |
| public int availableProcessors() | 获取可用的CPU处理器数量 |
| public long maxMemory() | 获取最大可用内存量 |
| public long totalMemory() | 获取总共可用内存量 |
| public long freeMemory() | 获取空闲内存量 |
| public void gc() | 运行垃圾收集器,释放垃圾空间 |
获取CPU处理器数量
public class Hello {
public static void main(String[] args) throws Exception{
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.availableProcessors());
}
}
获取内存信息
public class Hello {
public static void main(String[] args) throws Exception{
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.maxMemory());
System.out.println(runtime.totalMemory());
System.out.println(runtime.freeMemory());
}
}
GC操作
public class Hello {
public static void main(String[] args) throws Exception{
Runtime runtime = Runtime.getRuntime();
System.out.println("可用内存:"+runtime.totalMemory());
System.out.println("空闲内存:"+runtime.freeMemory());
System.out.println("产生垃圾空间");
String a ="";
for(int i=0;i<4000;i++){
a+=i;
}
System.out.println("可用内存:"+runtime.totalMemory());
System.out.println("空闲内存:"+runtime.freeMemory());
runtime.gc();
System.out.println("内存释放");
System.out.println("可用内存:"+runtime.totalMemory());
System.out.println("空闲内存:"+runtime.freeMemory());
}
}