Java常用类库
Posted wx62b6dba7e04cf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java常用类库相关的知识,希望对你有一定的参考价值。
一、StringBuffer类
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个方法:
- 获取指定索引字符:charAt(int index)
- 获取字符串长度:int length()
- 截取部分字符串: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;
protected Object clone() throws CloneNotSupportedException
return super.clone();
jdk.A@28d25987
A
1
jdk.A@4501b7af
A
1
=============Java 中应该使用啥数据类型来代表价格