Java常用类库

听闻少年二字,当与平庸相斥。这篇文章主要讲述Java常用类库相关的知识,希望能为你提供帮助。
一、StringBuffer类【Java常用类库】String类很强大,但是其内容不允许修改,而StringBuffer类的出现可以实现字符串内容的修改处理。
StringBuffer包含以下主要的方法:

  • 构造方法:StringBuffer()
  • 构造方法:StringBuffer(String s)
  • 追加:append(类型 变量)
  • 插入数据:insert(int offset, 类型 变量)
  • 删除指定范围数据:delete(int start, int end)
  • 字符串内容反转:reverse()
public class StringBufferDemo
public static void main(String[] args)
StringBuffer buffer = new StringBuffer("hsafrg");
System.out.println("origin -> " + buffer);
buffer.append(" 6789");
System.out.println("append -> " + buffer);
buffer.insert(0, "insert");
System.out.println("insert -> " + buffer);
buffer.delete(0,1);
System.out.println("delete -> " + buffer);
buffer.reverse();
System.out.println("reverse -> " + buffer);


origin -> hsafrg
append -> hsafrg 6789
insert -> inserthsafrg 6789
delete -> nserthsafrg 6789
reverse -> 9876 grfashtresn

实际上,
  • String里的“+”字符串连接符就等价于append()方法,所有的“+”在编译后都变成了append()方法;
  • String类对象转换成StringBuffer类对象可以通过StringBuffer的构造方法或者append()方法实现
  • 所有类的对象都可通过toString()方法转换成String类型。
二、StringBuilder类StringBuilder和StringBuffer的功能类似,不同的是StringBuffer线程安全,所有的方法都使用了synchronized关键字进行标注,StringBuilder非线程安全。
因此可以概括一下String、StringBuilder及StringBuffer的区别:
  • String类是字符串的首选类型,其内容不允许修改;
  • StringBuilder和StringBuffer内容允许修改;
  • StringBuffer线程安全,StringBuilder非线程安全。
三、CharSequence接口字符序列CharSequence是一个描述字符串结构的接口,String、StringBuilder及StringBuffer三个类都实现了该接口,只要有字符串就可以为CharSequence接口实例化,只要看到CharSequence,她描述的就是一个字符串,CharSequence接口主要包含一下3个方法:
  1. 获取指定索引字符:charAt(int index)
  2. 获取字符串长度:int length()
  3. 截取部分字符串:subSequence(int start, int end)
public class CharSequenceDemo
public static void main(String[] args)
CharSequence str = "6464646";
System.out.println("length() -> "+ str.length());
System.out.println("charAt() -> "+ str.charAt(2));
System.out.println("subSequence() -> "+ str.subSequence(1,3));


length() -> 7
charAt() -> 6
subSequence() -> 46

四、Runtime类Runtime类描述的是运行时状态,且是单例设计,要想获取实例化对象要依靠getRuntime()方法完成。它的实例化对象包含下面几个重要方法:
  • availableProcessors():获取本机CPU内核数
  • maxMemory():最大可用内存空间
  • freeMemory():空闲内存空间
  • totalMemory():可用内存空间
  • gc():手动释放内存
public class RunTimeDemo
public static void main(String[] args)
Runtime run = Runtime.getRuntime();
System.out.println("availableProcessors -> " + run.availableProcessors());
System.out.println("maxMemory -> " + run.maxMemory());
System.out.println("freeMemory -> " + run.freeMemory());
System.out.println("totalMemory -> " + run.totalMemory());


availableProcessors -> 4
maxMemory -> 3808428032
freeMemory -> 252053712
totalMemory -> 257425408

以上方法代码不常见,但在jvm调优时很重要。
五、对象克隆 Cloneable对象克隆指的是对象复制,即:使用已有的对象创建一个新的对象,属于全新的复制。需要用到Object类的clone()方法,且被克隆类必须实现Cloneable接口:
/**
* Cloneable接口使得对象具有拷贝功能
* 拷贝后改变原对象的值,看拷贝生成的新对象是否改变,若不改变就是深拷贝
* 这里是深拷贝
* Feng, Ge,2021年4月15日14:57:12
*/
public class CloneDemo
public static void main(String[] args) throws CloneNotSupportedException
A a = new A("A", 1);
A b = (A) a.clone();
System.out.println(a);
System.out.println(a.getName());
System.out.println(a.getNum());
System.out.println(b);
System.out.println(b.getName());
System.out.println(b.getNum());
System.out.println("===================================");

// 修改A的值,看B的值是否改变
a.setName("OK");
System.out.println(a);
System.out.println(a.getName());
System.out.println(a.getNum());
System.out.println(b);
System.out.println(b.getName());
System.out.println(b.getNum());



class A implements Cloneable
private String name;
private int num;
public A(String name, int num)
this.name = name;
this.num = num;

public String getName()
return name;

public int getNum()
return num;


public void setName(String name)
this.name = name;


@Override
protected Object clone() throws CloneNotSupportedException
return super.clone();


jdk.A@28d25987
A
1
jdk.A@4501b7af
A
1
=============

    推荐阅读