字符串String

1,String类

代表字符串,字符串是常量,用双引号引起来表示。它们在创建之后不能更改。

String对象的字符内容是储存在一个字符数组value[]中的
 

2,String常用方法

int length():返回字符串的长度    return value.length
char charAt(int index):返回某索引处的字符        return value[index]
boolean isEmpty():判断是否是空字符串    return value.length==0
String toLowerCase():使用默认语言环境,将String中的所有字符串转换为小写
String toUpperCase():使用默认语言环境,将String中的所有字符串转换为大写

3,String与基本数据类型包装类的转换

String与基本数据类型之间的转换

String--->基本数据类型,包装类:调用包装类的静态方法:parseXxx(str)

基本数据类型,包装类--->String:调用String重载的valueOf(xxx)

String与char[]之间的转换

String--->char[]:调用String的toCharArray()

char[]--->String:调用String的构造器

String与byte[]之间的转换 

String--->byte[]:调用String的getByte()

3,StringBuffer和StringBulider的使用

StringBuffer,String,StringBulider三者的异同?

        String:不可变的字符序列:底层结构使用char[]存储

        StringBuffer:可变的字符序列:线程安全的,效率低:底层使用char[]存储

        StringBulider:可变的字符序列:jdk5.0新增的,线程不安全的,效率高:底层使用char[]存储

源码分析

        String str=new String();//new char[0];

        String str1=new String("abc");//new char[]{"a","b","c"};

        StringBuffer sb1=new StringBuffer();//char[] value=new char[16];底层创建了一个长度是16

        的数组。

        sb1.append('a');//value[0]='a';

        sb2.append('b');//value[1]='b';

        StringBuffer sb2=new StringBuffer("abc");//char[] value=new char[];

问题一:System.out.println(sb2.length());//0

        问题二:扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组

                默认情况下,扩容为原来容量的2倍+2,同时将原有数组中的元素复制到新的数组中

        指导意义:开发中建议大家使用:StringBuffer(int capacity)或StringBulider(int capacity)

总结: 增:append(xxx);

删:deldelete(int start,int end);

改:setCharSt(int n,char ch);

查:charAt(int n);

插:insert(int offset,xxx);

长度:length();

遍历:for+charAt()

对比String,StringBuffer,StringBulider三者的效率: 从高到低

StringBulider>StringBuffer>String

4,关于String的练习之字符串反转

将一个字符串进行反转,将字符串中指定部分进行反转。比如“abcdefg”反转为“abfecg”

首先,先将字符串转换为char[],在通过for将char[]中数据进行反转

public class Main {

    /*
    将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为“abfedcg”

     */
    public static String reverse(String str,int startIndex,int endIndex){

        char[] arr=str.toCharArray();
        for(int x=startIndex,y=endIndex;x<y;x++,y--){
            char temp=arr[x];
            arr[x]=arr[y];
            arr[y]=temp;
        }

        return new String(arr);
    }


    public static void main(String[] args) {
        String str="abcdefg";
        String reverse=reverse(str,2,5);
        System.out.println(reverse);
    }
}

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值