把字符串转为字符数组


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_02


把字符串转为字节数组


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_03


通过这个函数和构造函数,可以实现字符串和字节数组的相互转换;


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_04


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_05



字母大小写转换


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_06


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_07


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_08


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_09



字符串去除前后空格


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_10


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_11


比较两个字符串的大小


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_12


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_13


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_14



String类方法小结

String的常用方法:

1、获取方法

int length(); 获取字符串的长度

char charAt( int index ) 根据指定的下标获取对应的字符数据

int indexOf( int ch ) 获取指定的字符在字符串中从前往后第一次出现的下标

int indexOf( int ch , int fromIndex ) 获取指定的字符在字符串中从指定的位置往后第一次出现的下标

int indexOf( String str ) 获取指定的字符串在字符串中从前往后第一次出现的下标

int indexOf( String str ,int fromIndex ) 获取指定的字符串在字符串中从指定的位置往后第一次出现的下标

int lastIndexOf( int ch ) 获取指定的字符在字符串中从后往前第一次出现的下标

int lastIndexOf( int ch , int fromIndex ) 获取指定的字符在字符串中从指定的位置往前第一次出现的下标

int lastIndexOf( String str ) 获取指定的字符串在字符串中从后往前第一次出现的下标

int lastIndexOf( String str ,int fromIndex ) 获取指定的字符串在字符串中从指定的位置往前第一次出现的下标

String substring( int beginIndex );截取字符串的子串,从指定下标开始直到字符串结束;

String substring( int beginIndex ,int endIndex );;截取字符串的子串,从指定下标(包括)开始直到指定下标(不包括)结束;

2、判断和比较

boolean isEmpty() 判断字符串是否为空

boolean equals(String anString ) 判断两个字符串是否相等

boolean contains( String s ) 判断指定的字符串在源串中是否存在

boolean startsWith( String str ) 判断是否以指定的字符串开始

boolean endsWith(String str) 判断是否以指定的字符串结尾

  1. 转换

valueOf() 把其他的数据转成字符串

toCharArray() 字符串转字符数组

getBytes() 字符串转字节数组

toUpperCase() 字符串中所有字母都转大写

toLowerCase() 字符串中所有字母都转小写

  1. 其他方法

trim(): 去除两端的空格

replace(char oldChar, char newChar):用新字符替换字符串中所有老字符

replace(CharSequence target, CharSequence replacement):用新字符串替换字符串中所有老字符串

int compareTo(String anString ) 根据两个字符串中的字符在编码表中的位置返回的是 零 正数 负数

字符串使用练习

练习1:对字符串中的数据进行排序

需求:把字符串”cbadwighckw”进行排序


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_15


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_16



练习2:统计指定字符在字符串中出现的次数

需求:统计字符串“adfadfsadfsdf”中字符’a’出现的次数;


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_17


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_18


需求:统计字符串中英文字母、数字和特殊字符分别出现的次数:


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_19


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_20



练习3:对字符串按照指定的内容切割,然后排序

需求:对字符串”华山-衡山-庐山-泰山-嵩山”按-进行切割,然后排序;


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_21


总结String

String类是由JDK中提供的一个专门用于对字符串进行操作的类,因此在程序中遇到与字符串相关的操作的时候,需要在第一时间内想到使用String类,而不是想着自己如何写代码去实现具体的功能。这种编程思想正是JAVA这门语言所提倡的方式。

String类中还有其他更多的方法,在后续的学习过程中会继续介绍。


字符串缓冲区

字符串缓冲区介绍

频繁修改字符串的问题

需求:将数组中的内容转换为一个字符串输出;


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_22


问题:这个程序中有没有什么可以改进的地方?


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_23


问题:在这段程序中,在循环里面没执行一次循环,都要对字符串str修改两次,因为字符串是常量值,不能改,所以每修改一次,都会新创建一个字符串对象;

而这个需求中我们只需要最后一个字符串对象,所以循环中创建的大量对象都是无用的,都是内存浪费;

使用字符串缓冲区可以解决这种问题;

结论:

当需要对字符串频繁的修改时,就应该使用字符串缓冲区,避免因为大量创建字符串对象而造成的内存浪费;


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_24



Java的字符串缓冲区类

字符串缓冲区也是一个事物,这种事物使用两个类表示:

StringBuffer:是线程安全的,效率相对比较低;如果在多线程环境下,对线程安全有要求,就要使用StringBuffer;

StringBuilder:是线程不安全的,效率相对比较高;如果在单线程环境下,或者对线程安全没有要求,就可以使用StringBuilder;

这两个类提供的功能一模一样;使用方法也一模一样;使用场景不同;

StringBuffer的使用


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_25


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_26


构造函数


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_27


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_28


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_29



常用功能函数

字符串缓冲区提供的功能,主要是针对缓冲区中的字符数据进行增删改查的操作;

增加数据

  1. 将数据添加到缓冲区的结尾:


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_30


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_31


将数据添加到缓冲区指定位置:


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_32


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_33


删除数据

删除指定索引处的字符


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_34


删除指定区间的多个字符


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_35


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_36



修改数据


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_37


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_38


反转缓冲区的所有字符


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_39


修改缓冲区长度

缓冲区中有长度和容量两个概念;

长度:缓冲区中已经保存的字符的数量;

容量:缓冲区在不扩容的情况下最大能够保存的数据的个数;


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_40


如果在调用这个函数时,将参数设置为0,就会失去缓冲区中所有字符,相当于清空缓冲区;

获取数据

获取指定位置的字符


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_41


获取指定区间的字符


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_42


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_43


字符串缓冲区总结

  1. 缓冲区,是一个容器,可用来存放一些临时数据;
  2. 字符串缓冲区是一个可以存放字符数据的容器,可以对存放的数据进行增删改查等操作,而且可以在需要的时候将里面保存的数据直接转化为一个字符串常量;
  3. Java中描述字符串缓冲区的类有两个,分别是StringBuffer和StringBuilder,都保存在java.lang包中;他们的联系和区别是:
  1. 联系:都是用来描述字符串缓冲区的类,提供的对字符串的操作都一样;
  2. 区别:
  1. StringBuffer是线程安全的,但是效率比StringBuilder低;在多线程而且有安全性要求时,应该使用StringBuffer;
  2. StringBuilder:线程不安全的,但是效率比StringBuffer高;在单线程环境或没有线程安全要求时,应该使用StringBuilder;
  1. 缓冲区是一个容器,对容器的数据操作,一般都有增、删、改、查四种;
  1. 增:表示向容器中添加数据
  2. 删:表示从容器中移除数据
  3. 改:表示修改容器中的数据
  4. 查:表示从容器中获取数据

练习:判断一个字符串是否是回文字符串;

“12321” “12321”

思路:将字符串反转,判断和原来的字符串是否相等;

将字符串反转,String类没有这个方法,所以需要先转换为StringBuffer对象,然后就可以反转,再转换为字符串对象,就可以使用equals函数比较;


BYTE数组 转 字符串PYTHON bytes数组转string_bytes数组转string指定编码_44


BYTE数组 转 字符串PYTHON bytes数组转string_java stringbuffer 空格_45