StringBuffer字符串缓冲类,System.RunTime类

如果需要频繁修改字符串内容,建议使用字符串缓冲类(StringBuffer)

StringBuffer其实是一个存储字符的容器。

笔试题目:使用StringBuffer无参的构造函数创建一个对象时,默认的初始容量是多少?如果长度不够使用,自动增长多少倍?

      StringBuffer底层是依赖了一个字符数组才能存储字符数据的,该字符串数组默认的初始容量是16,如果字符数组的长度不够用时,自动增长一倍。

StringBuffer是一个存储字符的容器

容器的具备的行为

  String

  增加

        append(Boolean b)  可以添加任意类型的数据到容器中

        insert(int offset,boolean b)  指定插入的索引值,插入对应的内容。

  删除

        delete(int start,int end)  根据指定的开始于结束的索引值删除对应的内容。

        deleteCharAt(int index)  根据指定的索引值删除一个字符。

  修改

        replace(int start,int end,String str)  根据指定的开始于结束索引代替成指定的内容

        reverse()  翻转字符串缓冲类的内容、  abc——>cba

        setCharAt(int index,char ch)  把指定索引值的字符串替换指定的字符。

        substring(int sart,int end)  根基指定的索引值截取子串。

        ensureCapacity(int minimumCapacity)  指定StringBuffer内容的字符数组长度的。

  查看

        indexOf(String str,int fromldex)  查找指定的字符串第一次出现的索引值,并且指定开始查找的位置

        lastlndeOf(String str)

        capacity()  查看当前字符数组的长度。

        length()

        charAt(int index)

        toString()  把字符串缓冲类的内容转换成字符串返回。

StringBuffer与StringBuilder的相同点与不同点:

    相同点:

        1,两个类都是字符串缓冲类。

        2,两个类的方法都是一致的。

    不同点:

        1,StringBuffer是线程安全的,操作效率低,StringBuilder是线程非安全的,操作效率高。

        2,StringBuffer是jdk1,0出现的,StringBuilder是jdk1,5出现的。

推荐使用:StringBuilder,因为操作效率高

代码演示:

public class Demo10 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("abcjavaabc");
/*
添加
sb.append(true);
插入
sb.insert(2,"小白");
删除

sb.delete(2,4);
sb.deleteCharAt(3);
修改

sb.replace(2,4,"小白兔");
sb.reverse();
sb.setCharAt(3,'红');
String subString = sb.substring(2,4);
System.out.println("子串的内容:"+subString);
查看
*/
int index = sb.indexOf("abc",3);
System.out.println("索引值为:"+index);
sb.append("java");
System.out.println("查看字符数组的长度:"+sb.capacity());
System.out.println("存储的字符个数:"+sb.length());
System.out.println("索引指定的索引值查找字符:"+sb.charAt(2));
System.out.println("字符串缓冲内容:"+sb);
}
}
运行结果:

 

 System系统类主要用于获取系统的属性数据。

System类常用的方法:

      arraycopy(Object src ,int srcPos,Object dest,int destPos,int length)

          src-源数组、

          srcPos-源数组中的起始位置。

          dest-目标数组。

          length-要复制的数组元素的数量。

      currentTimeMilllis()  获取当前系统时间,

      exit(int status)  退出jvm 如果参数是0表示正常退jvm,非0表示异常退出jvm。

      gc()  建议jvm赶快启动垃圾回收垃圾

      getenv(String name)  根据环境变量名字获取环境变量

      getproperty(key)

      finalize()  如果一个对象被垃圾回收期回收的时候,会先调用对象的finallize()方法。

代码演示:

package aa;

import java.util.Arrays;
import java.util.Properties;

class person1{
String name;
public person1(String name){
this.name = name;
}
public void finalize() throws Throwable{
super.finalize();
System.out.println(this.name+"被回收了、、");
}
}

public class Demo11 {
public static void main(String[] args) {
int[] srcArr = {10,12,14,16,19};
int[] destArr = new int[4];
System.arraycopy(srcArr,1,destArr,0,4);
System.out.println("目前数组的元素:"+ Arrays.toString(destArr));
System.out.println("当前的系统时间:"+System.currentTimeMillis());
System.out.println("环境变量:"+System.getenv("path"));
for (int i = 0;i<4;i++){
new person1("阿婷"+i);
System.gc();
}
/*Properties properties = System.getProperties();
properties.list(System.out);*/
String value = System.getProperty("os.name");
System.out.println("当前系统:"+value);
}
}
运行结果:

 

 RunTime 该类主要代表了应用程序运行的环境。

    getRuntime()  返回当前应用程序的运行环境对象。

    exec(String command)  根据指定的路径执行对应的可执行文件。

    freeMemory()  返回java虚拟机中的空闲内存量。。以字节位单位

    maxMemory()  返回java虚拟机试图使用的最大内存量。

    totalMemory()  返回java虚拟机中的内存总量

代码演示:

import java.io.IOException;

public class Demo12 {

public static void main(String[] args) throws IOException, InterruptedException {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\Windows\\notepad.exe");
Thread.sleep(3000);
process.destroy();
System.out.println("java虚拟机中的空闲内存量:"+runtime.freeMemory());
System.out.println("java虚拟机中试图使用的最大内存量:"+runtime.maxMemory());
System.out.println("java虚拟机中的内存总量:"+runtime.totalMemory());
}
}
运行结果:

 

 

 

posted @ 2022-02-10 22:10  柯基$  阅读(57)  评论(0)    收藏  举报