String字符串

String 的含义

  • String 是定义一个字符串对象(内存中的字符串都是一个对象。)
          String 一旦被初始化就不能被改变(可以改变变量指向,但是不能改变对象内容)

    定义方式: String s1 = “abc”; //在内存中存在一个对象。
              String s2 = new String(“abc”); //在内存中存在两个对象。
             String s3 = “abc”;

    比较: s1 == s2 为false
              s1 == s3 为true (相同的字符串在静态池中一旦存在,就不会再产生新的该字符串了,以后其再出现,都使用它)
            String的equals方法: s1.equals(s2) == true;

二、字符串的常见方法

  • 1、获取
            1.1、字符串中包含的字符数(也就是字符串的长度)
                int length(); (注意与数组中的length做区别,数组中为属性,字符串中为方法)
String str3="dadssadsadsadsaasd";
		int len = "dadssadsadsadsaasd".length();
		System.out.println("字符串长度" + len);

1.2、某一个角标位置上的字符
            char charAt(int index); (当访问的角标不存在时,提示字符串角标越界异常)

//	获得指定位置的字符
		char a=str3.charAt(4);
		System.out.println(a);

1.3、根据字符获取该字符在字符串中的角标位置
            int indexOf(int ch); 返回的是字符第一次出现的角标位置。
            int indexOf(int ch,int fromIndex); 返回的是从fromIndex开始字符出现的角标位置。

int indexOf(String str); 返回的是字符串第一次出现的角标位置。
            int indexOf(String str,int fromIndex); 返回的是从fromIndex开始字符串 出现的角标位置。

(当访问的字符 或 字符串不存在时,返回 -1)

int lastIndexOf(int ch): 反向索引(种类和解释与正向索引相同 )
              注:反向索引只是从右向左索引找到第一次出现目标的角标位置, 返回的依然是角标位
              置

//		获得小字符串在源字符串中的索引位置
		int i=str3.indexOf("sa");
		System.out.println(i);

1.4连接两个字符串的函数 concat (后面括号里面的会放在前边)

//		拼接两个字符串
		String str = "hello";
		String str1 = "world";
		String str2 = str.concat(str1);
		System.out.println(str2);

2、判断

2.1、判断字符串中是否包含指定字符串
            boolean contains(CharSequence s) :CharSequence:为String实现的接口

特殊之处:indexOf(String str):可以索引字符串str第一次出现的位置,如果返回 -1,则表示该str不在字符串内。
                  所以,也可以用于对指定字符串判断是否包含。
                    if(str1.indexOf(“aaa”) == -1)
                    而且该方法既可以判断,由能获取位置。

2.2、判断字符串是否有内容
            boolean isEmpty() :当且仅当长度为0时返回true。

2.3、判断字符串是否以某某开头
            boolean startsWith(String prefix)

2.4、判断字符串是否以某某结尾
            boolean endsWith(String suffix)

2.5、判断字符串的内容是否相同
            boolean equals(Object anObject) (复写了Object 类中的equals方法)

2.5、判断字符串的内容是否相同 ,(不考虑大小写)
            boolean equalsIgnoreCase(String anotherString)

String str1 = "abc";
		String str2 = "Abc";
		char[] charArray={'a','b','c'};
		String str3=new String(charArray);
		System.out.println(str1.equalsIgnoreCase(str2));
		System.out.println(str1.equals(str2));
	}

3、转换。

3.1、 将字符串转换成字符数组
                 char[] toCharArray()

char[] str="abcdefg".toCharArray();
        System.out.println(str.length);
        System.out.println(str[1]);
        System.out.println("================");

3.2‘ 将字节数组转换成字符串
                 String(byte[] value)
                 String(byte[] value, int offset, int count): 将数组中从下标offset开始,一共count位字符转换成字符串。

                     

3.4、 将字符串转换成字节数组
                 byte[] getBytes(String charsetName)

 byte[] str1="abc".getBytes();
        System.out.println(str1.length);
        System.out.println(str1[0]);

3.5、 将基本数据类型转换成字符串

static String valueOf(boolean b)
                 static String valueOf(char c)
                 static String valueOf(char[] data)
                 static String valueOf(double d) 等等。

注意:字符串和字节数组在转换过程中是可以指定编码表的。

4、替换

String replace(char oldChar, char newChar) : 返回一个数组,它是用newChar 替换就数组中的oldchar等到的。(一个一个的替换)
        String replace(CharSequence target, CharSequence replacement) : 后替前,用新串替换原串中的子串。

 String str6="how do you do";
        String str7=str6.replace("o","*" );
        System.out.println(str6);
        System.out.println(str7);

注:原字符串没有改变,只是新出现了一个替换后的字符串(字符串一旦初始化,不能改变)
            如果要替换的字符没有,还是返回原串,不会生成新的字符串。

5、切割,分割

String[] split(String regex) : 指定其中某一个字符或字符串,以其下刀,切割字符串(其实应当依据正则表达式规则拆分)

6、子串:(获取一个字符串的一部分)

String substring(int beginIndex) //从指定下标位置到结尾。
        String substring(int beginIndex, int endIndex) //从指定下标位置到结束下标位置前一个

String str1="helloWorld";
  String str2=str1.substring(5);
  System.out.println(str1);
  System.out.println(str2);
  String str3=str1.substring(4, 7);
  System.out.println(str3);

7、转换、去除空格、比较

7.1:将字符串转换成大写或者小写。
              String toUpperCase()
              String toLowerCase()
        7.2:将字符串两端多余的空额去除。
              String trim()
        7.3:将两个字符串进行自然顺序的比较。
              int compareTo(String anotherString)
              int compareToIgnoreCase(String str) :不考虑大小写。

从第一位开始比较,比参数大返回正数,比参数小返回负数,都相等返回参数为0:一旦在某一位上分出大小了,便不再向后比较。

三、StringBuffer
    定义:字符串缓冲区, 为一个容器。

特点:
      1、长度可变化。
      2、可以直接操作多个数据类型。
      3、最终通过toString方法返回一个字符串。

c: create u: update r:read d: delete

1、存储
        StringBuffer append():将指定数据作为参数添加到已有数据的结尾处。
            注:在StringBuffer对象调用appeed方法后,返回的就是其本身。
        StringBuffer insert(int offset, 基本数据 b) : 从offest下标位开始插入 基本数据类型、字符串或者数组 b。
            注:在StringBuffer对象调用insert方法后,返回的就是其本身。

2、删除
        StringBuffer delete(int start, int end) : 移除下标start到 end-1的字符。
            注:在StringBuffer对象调用delete方法后,返回的就是其本身。
        StringBuffer deleteCharAt(int index) : 移除此序列指定下标位置的字符(char)。
            注:在StringBuffer对象调用deleteCharAt方法后,返回的就是其本身。

清空缓冲区: sb.delate(0,sb.length());

3、获取
        char charAt(int index) 返回此序列中指定索引处的 char 值。
        int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。
        int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
        int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。
        int lastIndexOf(String str, int fromIndex) 返回最后一次出现的指定子字符串在此字符串中的索引。

String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
        String substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列。
        注意:这里返回的是String,不StringBuffer。

String toString():放回当前缓存区字符串。
          int length(): 返回字符数。

4、修改

StringBuffer replace(int start, int end, String str) 在start和end之间,用str替换

void setCharAt(int index, char ch) 在index下标位置使用 字符dh替换原字符

5、反转

StringBuffer reverse()

6、
        void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
        将缓冲区中的指定数据存到指定的字符数组中,从指定位置开始存。

四、StringBuilder
    在jdk 1.5之后新加功能
      其余StringBuffer功能一样。

与StringBuffer的区别:
        StringBuffer是线程同步的。
        StringBuilder是线程不同步的。

当是单个线程操作缓冲区时,建议使用 StringBuilder 其有更高的效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值