Java学习笔记(13)

时间:2023-12-13 18:35:56

StringBuffer

增加

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

    insert(int offset,boolean b)  指定插入的索引值,插入对应的内容    (offset可以理解为想插入的东西在插入后的索引值为多少,也就是想插入地方右区间的索引值)

删除

    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 start,int end)   根据指定的索引值截取子串

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

查看

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

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

    charAt(int index)   根据指定的索引值查找字符

    lastIndexOf(String str)  查找指定字符最后一次出现的索引值

    length() 存储的字符个数

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

判断

public static void main(String[] args) {
// TODO Auto-generated method stub
//先使用StringBuffer无参的构造函数创建一个字符串缓冲类。
StringBuffer sb=new StringBuffer();
sb.append("abc");
System.out.println("字符串缓冲类的内容:"+sb);
/* 添加
sb.append(true);
sb.append(3.14f);
System.out.println("字符串缓冲类的内容:"+sb);
*/
//插入
sb.insert(2, "小明");
System.out.println("字符串缓冲类的内容:"+sb);
//删除
sb.delete(2, 4); //删除的时候也是包头不包尾的
System.out.println("字符串缓冲类的内容:"+sb);
sb.insert(2, "小明");
sb.deleteCharAt(3);
System.out.println("字符串缓冲类的内容:"+sb);
} 结果:
字符串缓冲类的内容:abc
字符串缓冲类的内容:ab小明c
字符串缓冲类的内容:abc
字符串缓冲类的内容:ab小c
public static void main(String[] args) {
// TODO Auto-generated method stub
//先使用StringBuffer无参的构造函数创建一个字符串缓冲类。
StringBuffer sb=new StringBuffer();
sb.append("abc");
System.out.println("字符串缓冲类的内容:"+sb);
/* 添加
sb.append(true);
sb.append(3.14f);
System.out.println("字符串缓冲类的内容:"+sb);
*/
//插入
sb.insert(2, "小明");
System.out.println("字符串缓冲类的内容:"+sb);
//删除
/*sb.delete(2, 4); //删除的时候也是包头不包尾的
System.out.println("字符串缓冲类的内容:"+sb);
sb.insert(2, "小明");
sb.deleteCharAt(3);
System.out.println("字符串缓冲类的内容:"+sb);
*/
//修改
sb.replace(2, 4, "陈小狗");
System.out.println("字符串缓冲类的内容:"+sb);
sb.reverse();
System.out.println("字符串缓冲类的内容:"+sb);
sb.reverse();
sb.setCharAt(3, '红');
System.out.println("字符串缓冲类的内容:"+sb);
System.out.println("字符串的内容:"+sb.substring(2, 4));
sb.ensureCapacity(20);
} 结果:
字符串缓冲类的内容:abc
字符串缓冲类的内容:ab小明c
字符串缓冲类的内容:ab陈小狗c
字符串缓冲类的内容:c狗小陈ba
字符串缓冲类的内容:ab陈红狗c
字符串的内容:陈红
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer sb=new StringBuffer();
sb.append("abcjavaabc");
//查找
System.out.println("索引值为:"+sb.indexOf("abc", 0));
System.out.println("索引值为:"+sb.indexOf("abc", 3));
//sb.ensureCapacity(20);
sb.append("javajava");
System.out.println("查看字符数组的长度:"+sb.capacity());
System.out.println("存储字符的个数:"+sb.length());
System.out.println("根据指定的索引值查找字符:"+sb.charAt(2));
System.out.println("转换成字符串输出:"+sb.toString());
} 结果:
索引值为:0
索引值为:7
查看字符数组的长度:34
存储字符的个数:18
根据指定的索引值查找字符:c
转换成字符串输出:abcjavaabcjavajava

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

    相同点:

      1.两个类都是字符串缓冲类

      2.两个类的方法与实现都是一致的

    不同点:

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

      2.StringBuffer是jdk1.0出现的,StringBuilder是jdk1.5的时候出现的

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

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

System类常用的方法:

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

import java.util.*;
public class Demo1 {
/*
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] srcArr= {10,12,14,16,19};
//把srcArr数组的元素拷贝到destArr数组中
int[] destArr=new int[4];
System.arraycopy(srcArr, 1, destArr, 0, 4);
System.out.println("目标数组的元素:"+Arrays.toString(destArr));
} } 结果:
目标数组的元素:[12, 14, 16, 19]

    currentTimeMillis()    获取当前系统时间       重点

System.out.println("当前的系统时间是:"+System.currentTimeMillis());

结果:
当前的系统时间是:1549623586306

    exit(int status)      退出jvm    如果参数是0表示正常退出jvm,非0表示异常退出jvm  0或者非0的数据都可以退出jvm,对于用户而言没有任何区别    一般

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] srcArr= {10,12,14,16,19};
//把srcArr数组的元素拷贝到destArr数组中
int[] destArr=new int[4];
System.arraycopy(srcArr, 1, destArr, 0, 4);
System.exit(0); //jvm退出... 0或者非0的数据都可以退出jvm。对于用户而言没有任何区别
System.out.println("目标数组的元素:"+Arrays.toString(destArr));
System.out.println("当前的系统时间是:"+System.currentTimeMillis()); } 结果:

(编程习惯:try块中一般传0,catch中一般传非0,其实传什么也可以达到效果)