Java类
SringBuffer类
由于String类声明后,于是有了StringBuffer类和StringBuilder类。
StringBuffer类和StringBuilder类都需要通过构造方法进行实例化对象,而后才能调用方法处理。
StringBuffer和StringBuilder的区别
StringBuffer从JDK1.0开始提供,StringBuilder从JDK1.5开始提供。这两个类的功能,都是可以修改的字符串类型,唯一的区别在于StringBuffer类中的方法使用了synchronize关键字进行修饰,适合用于多线程访问下的同步处理;而StringBuilder类中的方法没有使用synchronize关键字,属于非线程安全的方法。
方法 | 类型 | 描述 |
---|---|---|
public StringBuffer() | 构造 | 创建一个空的StringBuffer对象 |
public StringBuffer(String str) | 构造 | 将收到的str内容变为StringBuffer类对象 |
public StringBuffer append(Object obj) | 普通 | 内容连接,等价于String中的"+" |
public StringBuffer insert(int office,Object obj) | 普通 | 指定索引位置插入obj |
:public StringBuffer delete(int start,int end) | 普通 | 删除指定索引范围的数据 |
:public StringBuffer reverse() | 普通 | 反转字符串 |
代码实现:
//无参构造方法
StringBuffer sb1 = new StringBuffer();
//有参构造
StringBuffer sb2 = new StringBuffer("123456798");
//数据添加
sb1.append("abc").append("de");
System.out.println("sb1 = " + sb1);
System.out.println("sb2 = " + sb2);
//数据删除
System.out.println("删除后:" + sb1.delete(0,2));
//插入数据
System.out.println("插入数据后:" + sb1.insert(0,"ab"));
//内容反转
System.out.println("内容反转:" + sb2.reverse());
输出内容:
sb1 = abcde
sb2 = 123456798
删除后:cde
插入数据后:abcde
内容反转:897654321
CharSequence接口
JDK1.4之后提出的一个描述字符串标准的接口。
方法 | 类型 | 描述 |
---|---|---|
public char charAt(int index) | 普通 | 获取指定索引字符 |
public int length() | 普通 | 获取字符串的长度 |
public CharSequence subCharSequence(int start,int end) | 普通 | 获取开始到结束位置字符串 |
代码实现:
CharSequence c = "abcdefg";
//charAt()方法
System.out.println("第一个字符:" + c.charAt(0));
System.out.println("第三个字符:" + c.charAt(2));
//获取字符串的长度
System.out.println("字符串的长度:"+c.length());
//截取字符串
System.out.println("截取3-6:"+c.subSequence(3,6));
运行结果:
第一个字符:a
第三个字符:c
字符串的长度:7
截取3-6:def
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() | 普通 | 垃圾回收 |
代码部分
//public static Runtime getRuntime() 获取Runtime实例化对象
Runtime runtime = Runtime.getRuntime();
//public int availableProcessors() 获取可用的CPU处理器数量
System.out.println("CPU处理器数量(availableProcessors):"+runtime.availableProcessors()); //8
//public long maxMemory() 获取最大可用内存量
System.out.println("最大可用内存(maxMemory):"+runtime.maxMemory());
//public long totalMemory() 总共可运行的内存量
System.out.println("总共可运行的内存量(totalMemory):"+runtime.totalMemory());
//public long freeMemory() 空闲内存
System.out.println("空闲内存(freeMemory):"+runtime.freeMemory());
//public void gc() 清空垃圾收集器,释放垃圾空间
runtime.gc();
运行结果
CPU处理器数量(availableProcessors):8
最大可用内存(maxMemory):3791650816
总共可运行的内存量(totalMemory):257425408
空闲内存(freeMemory):254741016
System类
System是一个系统类,主要是打印输出使用。
方法 | 类型 | 描述 |
---|---|---|
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) | 普通 | 数组复制 |
public long currentTimeMillis() | 普通 | 获取当前时间,返会long类型 |
代码实现
int[] arr1 = {1,2,3,4,5,6,7,8,9};
int[] arr2 = {9,8,7,6,5,4,3,2,1};
System.out.println("arr1 = " + Arrays.toString(arr1));
System.out.println("arr2 = " + Arrays.toString(arr2));
//数组复制,将arr2的0索引位置数据复制到arr1的2索引位置,长度为3.
System.arraycopy(arr1,2,arr2,0,3);
System.out.println("arr1 = " + Arrays.toString(arr1));
System.out.println("arr2 = " + Arrays.toString(arr2));
//获取当前时间的long类型值
long l = System.currentTimeMillis();
System.out.println(l);
//通过Date(long date) 将long类型转为Date类型
Date date = new Date(l);
System.out.println(date);
//通过SimpleDateFormat类实现日期格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:sss");
System.out.println(simpleDateFormat.format(date));
运行结果
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr2 = [9, 8, 7, 6, 5, 4, 3, 2, 1]
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr2 = [3, 4, 5, 6, 5, 4, 3, 2, 1]
1606717623001
Mon Nov 30 14:27:03 CST 2020
2020年11月30日 14:27:03:003
对象克隆
Object类中提供的clone()方法
方法 | 描述 |
---|---|
public Object clone() throws CloneNotSupperortedException | 克隆对象 |
要实现克隆,克隆对象的类必须实现Cloneable接口。
代码实现
class Boy implements Cloneable{
private String name;
private int age;
public Boy(){
}
public Boy(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Boy{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
Boy boy1 = new Boy("张三",20);
Boy boy2 = (Boy)boy1.clone();
boy2.setName("李四");
System.out.println(boy1.toString());
System.out.println(boy2.toString());
}
}
运行结果
Boy{name='张三', age=20}
Boy{name='李四', age=20}