java学习笔记(十二)String与StringBuffer类

String与StringBuffer类

1.String类

1.定义: 是由多个字符组成的一串数据。(字符序列)
    其实字符串可以看成是一个字符数组。
2.构造方法:
    public String():无参构造方法
    public String(byte[] bytes):把字节数组转换为字符串
    public String(char[] value):把字符数组转换为字符串
    public String(char[] value,int offset,int count):把字符数组的一部分转换为字符串
    public String(String original):把一个字符串转换为字符串

(需要利用到的一个成员方法)成员方法:
    public int length():返回此字符串的长度
3.String的特点
    A:
    String类的数据特点:
    字符串是常量;它们的值在创建之后不能更改
    根据以上结论请问输出的s的值是多少?
    String s = "hello";
    s += "world";
    System.out.println(s); 

    结论:
    字符串的内容不能发生改变,但是字符串引用的指向是可以改变的。

    B:String s = new String("hello")和String s = "hello"的区别
        前者创建了1个或者2个对象
        后缀创建了0个或者1个对象
4.String类的成员方法
    A:判断功能
      boolean equals(Object obj):比较两个字符串的内容是否相同,严格区分大小写。(用户名,密码)
      boolean equalsIgnoreCase(String str):比较两个字符串的内容是否相同,忽略大小写。(验证码)
      boolean contains(String str):判断字符串中是否包含一个子串。
      boolean startsWith(String str):判断是否以指定的字符串开头
      boolean endsWith(String str):判断是否以指定的字符串结尾
      boolean isEmpty():判断字符串的内容是否为空
      问题:内容为空和对象为空是一个意思吗?
      答:不是

    B:获取功能
      String类的获取功能:
      int length():返回字符串的长度。其实就是字符的个数。
      char charAt(int index):返回字符串中指定索引处的字符。
      int indexOf(int ch):返回指定的字符在字符串中第一次出现的索引。
            明明说的是字符,为什么是int呢?
            原因是int类型还可以接收char类型。
            97,'a'是一样的效果。
            但是如果参数是char类型,你就不能写97了。
      int indexOf(String str):返回指定的字符串在字符串中第一次出现的索引。
      String substring(int start):截取从start开始到末尾的字符串。
      String substring(int start,int end):截取从start开始到end结束的字符串。

    C:转换功能
      byte[] getBytes():把字符串转换为字节数组
      char[] toCharArray():把字符串转换为字符数组
      static String valueOf(char[] chs):把字符数组转换为字符串
      static String valueOf(int i):把int类型的数据转换为字符串
            valueOf():可以把任意类型的数据转换为字符串。
      String toLowerCase():把字符串转成小写
      String toUpperCase():把字符串转成大写
      String concat(String str):拼接字符串,前面我们使用过+进行字符串的拼接,不够专业。


    D:其他功能
      A:替换功能
            String replace(char old,char new)
            String replace(String old,String new)
      B:去除字符串两端空格   
            String trim()

练习:有abasdcalsjdfasf34asfjsfasf一段字符串,找出其中重复最多的字符,和重复最少的字符和重复的次数!

public class StringFind {
    public static void main(String[] args) {
        String s="abasdcalsjdfasf34asfjsfasf";

    char[] c=s.toCharArray();
    int[] cunt=new int[c.length];
    int max=0;
    char maxchar=' ';
    char minchar=' ';
    for (int i = 0; i < c.length; i++) {
        for (int j = 0; j < c.length; j++) {
            if(c[i]==s.charAt(j))
            {
                cunt[i]+=1;
            }   
        }   
    }
    for (int i = 0; i < cunt.length; i++) {
        if(cunt[i]>max){
            max=cunt[i];
            maxchar=c[i];
        }   
    }
    System.out.println("重复次数最多的字符和次数为:");
    int flag = 0;
    for (int i = 0; i < cunt.length; i++) { 

        for (int j = 0; j <i; j++) {
            if(c[i]==c[j]){
            flag=1;
            }   
        }
            if(cunt[i]==max&flag!=1){   
            System.out.print((char)c[i]+"("+ cunt[i]+")次"+"  ");
            }
            flag=0;
        }
    System.out.println();
    System.out.println("重复次数最少的字符和次数为:");
    int min=max;
    for (int i = 0; i < cunt.length; i++) {

        if(cunt[i]<min){
            min=cunt[i];
            minchar=c[i];
        }


    }

    for (int i = 0; i < cunt.length; i++) { 

        for (int j = 0; j <i; j++) {
            if(c[i]==c[j]){
            flag=1;
            }   
        }
            if(cunt[i]==min&cunt[i]!=max&flag!=1){  
            System.out.print((char)c[i]+"("+ cunt[i]+")次"+"  ");
            }
            flag=0;
        }
}

}

这里写图片描述

2.StringBuffer

1.构造方法:
    StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
    StringBuffer(int capacity):构造一个其中不带字符的字符串缓冲区,其初始容量为 capacity个字符。
    StringBuffer(String str):构造一个其中带字符的字符串缓冲区,其初始容量为??? 个字符。
2. 成员方法:
    public int length():返回长度(字符数)。实际值
    public int capacity():返回当前容量。 理论值 
   添加功能:添加元素,并返回本身的对象。
    A:public StringBuffer append(String str):追加数据,在末尾添加
    B:public StringBuffer insert(int offset,String str):插入数据,在指定位置添加    
    删除功能:
    public StringBuffer deleteCharAt(int index):删除指定索引处的字符
    public StringBuffer delete(int start,int end):删除从start开始到end结束的数据,包左不包右
   替换功能:
    public StringBuffer replace(int start,int end,String str):用str替换从start到end的数据

    反转功能:
    public StringBuffer reverse()
    截取功能:返回值类型是String类型,本身没有发生改变
    public String substring(int start)
    public String substring(int start,int end) 

3.String与StringBuffer相互转换:

1.String – StringBuffer
        String s = "hello";
        // 方式1
        StringBuffer sb1 = new StringBuffer(s);
        // 方式2
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
2. StringBuffer – String
        StringBuffer sb = new StringBuffer("world");
        //方式1
        String s1 = sb.substring(0);
        //方式2
        String s2 = sb.toString();
        //方式3
        String s3 = new String(sb);
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值