JAVA基础类库
String类
String类在所有开发项目里面都会用到的一个功能类,并且这个类拥有以下特点:
- 每一个字符的常量都属于一个String类的匿名对象,并且不可更改;
- String类有两个常量池:静态常量池、运行时常量池。
- String类对象实例化建议用直接赋值的形式进行完成,这样可以将我们的对象保存在对象池之中,以方便下次的使用。
但是String也有一个很大的弊端,那就是他的内容不允许进行修改。
所以,为了解决这个问题,JAVA专门提供了StringBuffer类,可以实现字符串内容的处理。
String 和 StringBuffer 的对比
- String类要转化成StringBuffer类,可以使用StringBuffer自带的构造方法。
- 而所有类对象想要转换成String类,可以使用toString方法,转换为String类;
StringBuffer类有很多String类不具备的方法:
名称 | 使用 |
---|---|
增加内容 | append方法 |
插入内容 | insert方法 |
删除内容 | delete方法 |
反转内容 | reverse方法 |
- 与StringBuffer类相似的还有一个 StringBuilder类,它和StringBuffer类功能一样
- 但是StringBuilder类不是线程安全的,因为它里面的方法没有进行 Synchronized 的修饰,所以数据是不会同步的,所以线程也是不安全的。
String类、StringBuffer类以及StringBuilder类的区别
- String类是字符串的首选类型,其最大的特点就是内容不允许修改;
- 而StringBuffer类和StringBuilder类的内容是与允许修改的。
- StringBuffer类是在JDK1.0开始就有的,属于线程安全类,而StringBuilder类,是在JDK1.5之后才有的,属于线程不安全类。因为其里面的方法,没有被Synchronized进行修饰。
CharSequence接口
- CharSequence接口是描述字符串结构的接口,一般都有三种结构常用,就上楼上那三个。
AutoCloseable接口
- 主要用于以后再资源开发的处理上,实现资源的自动关闭和释放。
- 因为,我们发现,在资源的开发处理方面,都会有一个关闭的方法,于是干脆就搞了个自动关闭。要配合异常处理一起来使用。
class A implements AutoCloseable{
public void send(){
System.out.println("【消息发送】");
}
@Override
public void close() throws Exception {
System.out.println("【通道关闭】");
}
}
public class 常用库练习 {
public static void main(String[] args) throws Exception{
try(A a = new A()){
a.send();
}catch (Exception e){}
}
}
- 可以看到,我并没有进行关闭的处理,但是输出的结果,却是有通道关闭的效果,这就是AutoCloseable接口的使用了。
- 在JDK1.7之后出现的产物,一定要和异常处理绑在一起,才能正常的使用。
Runtime类
- 这样看起来就比较直观啦。
- 由于我们的Runtime类属于我们的单例设计模式,如果想要获取实例化对象,只能使用我们的类中getRuntime()方法进行,因为Runtime类的构造器已经私有化了,所以不能进行实例化,Runtime类是由,我们的JVM进行维护的。
- 获取实例化的对象:public static Runtime getRuntime();
public class 常用库练习 {
public static void main(String[] args) throws Exception{
Runtime ans = Runtime.getRuntime();
System.out.println(ans.availableProcessors());
}
}
- 通过availableProcessors方法,可以获得电脑本机的CPU内核数。
什么是GC?如何处理?
- GC就是垃圾收集器,是可以由系统自己调用的垃圾释放功能,或者使用Runtime类里面的gc()方法手工调用。
System类
public class 常用库练习 {
public static void main(String[] args) throws Exception{
Runtime ans = Runtime.getRuntime();
long a =System.currentTimeMillis();
String s = "";
for(int i=1;i<30000;i++)s += i;
long b = System.currentTimeMillis();
System.out.println("操作耗时:" + (b - a));
}
}
- 可查看代码耗时。
- 然后System类里面呢,也有GC方法,但是这个gc方法并不是新的,而是调用了Runtime类里面的gc方法。
- = Runtime.getRuntime().gc();
- 是一个这样子的情况,相当于,我们的手工回收了。