Java之字符串常用操作

来源:互联网 发布:php读取txt文件前 编辑:程序博客网 时间:2024/05/23 01:58

字符串的创建

方式1

String str = "abc";
这里写图片描述

方式2

String str = new String("abc");
这里写图片描述
- 值为null的字符串与空字符串的区别
这里写图片描述

字符串的连接

String str = str1+str2;
String str = str1.concat(str2);

获取字符串信息

求字符串长度

int len = str.length();

字符串的比较

- boolean bool = 字符串.equals(对比字符串)
- boolean bool = 字符串.equalsIgnoreCase(对比字符串)
- boolean bool = 字符串1 == 字符串2
区别:equals和equalsIgnoreCase仅比较字符串内容,不比较地址,其中equalsIgnoreCase为不区分大小写地比较内容;而“==”不仅比较内容,还比较地址是否相同,如下图所示
创建字符串
创建字符串

字符串在内存中的存储情况
字符串在内存中的存储情况

进行比较
进行比较

输出结果
输出结果

字符串的查找

字符串的查找
其中常用的为
charAt(int index)
indexOf(String str)
indexOf(String str,int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str,int fromIndex)

取得子串与判断字符串开头结尾

取得子串

//从下标fromIndex开始取子串
String substr = str.substring(int fromIndex);
//从下标fromIndex开始,到endIndex的前一个字符为止的子串
String substr = str.substring(int fromIndex,int endIndex);

判断开头结尾

//判断str是否以prestr开头
boolean bool = str.startsWith(String prestr);
//判断str从index位置开始的部分是否以prestr开头
boolean bool = str.startsWith(String prestr,int index);
//判断str是否以laststr结尾
boolean bool = str.endsWith(String laststr);

字符串的操作

分割字符串

//根据splitstr对str进行分割,分割后的结果放入字符串数组strArray
String[] strArray = str.split(String splitstr);
例1:如下图
str = "Split_this_string";
splitstr = "_";
这里写图片描述

例2:

str = "split_this___string";String[] strArray = str.split("_");

则应有strArray = {"split","this","","","string"};
这是因为两个连着的”_”之间没有字符串,故它们之间分割出的结果为长度为0 的字符串”“

大小写转换

String upperstr = str.toUpperCase();
String lowerstr = str.toLowerCase();

删除两端空白字符

String newstr = str.trim();

字符串的替换

//将str中的字符oldchar全部替换成newchar
String str1 = str.replace(char oldchar,char newchar);
//将str中的字符串oldstr全部替换成newstr
String str2 = str.replace(String oldstr,String newstr);
//将str中的字符串oldstr全部替换成newstr,实现功能与replace一样
String str3 = str.replaceAll(String oldstr,String newstr);
//将str中的第一次出现字符串oldstr替换成newstr
String str4 = str.replaceFirst(String oldstr,String newstr);

字符串与对象及基本类型变量的转换

对象及基本类型变量转换为字符串

  • 对象转换为字符串
    String str = obj.toString();
    说明:所有的对象都有toString()的方法来转换为字符串,输出的是对象的名字或所表示的值,但基本型变量没有toString()方法

  • 基本型变量转换为字符串,如
    String str = String.valueOf(int i);
    String str = String.valueOf(float f);
    String str = String.valueOf(double d);
    String str = String.valueOf(boolean b);
    说明:注意valueOf是属于String这个类的静态方法

字符串转换为基本类型变量及所对应的对象

  • 字符串转换为Integer/Short/Long/Float/Double/Boolean/Byte/Character等基本类型变量对应的对象类型,以Integer举例,其他类似
    Integer int = Integer.valueOf(String str);

  • 字符串转换为int/short/long/float/double/boolean/byte/char等基本类型变量

    1. 直接转换,借助基本类型所对应的对象的方法,以int为例
      int i = Integer.parseInt(String str);
      其中比较特别的是char ch = String.charAt(int index);
      这里写图片描述
    2. 间接转换,即先转换为基本变量所属的对象类型,再自动解包
      注:自动打包为基本类型变量向所属对象类型的自动转化,自动解包为对象向所对应的基本类型变量自动转换,为自动打包的逆过程。

      • 总结
        这里写图片描述

格式化字符串

String str = String.format(格式字符串,参数列表);

字符串与字符数组

字符串完全转换为字符数组

char[] chArray = str.toCharArray();

字符串部分转换为字符数组

getChars(起始索引位置,结束索引位置,字符数组名,数组起始下标);
举例:

char[] chArray = new char[20];str = "String is NOT array";str.getChars(3,12,chArray,5);

这里写图片描述

StringBuffer和StringBuilder类

由于String类型为final,内容无法修改,创建之后就固定了,所以String方法中即使有修改的操作也是创建了一个新的字符串,而StringBuffer和StringBuilder类可以修改字符串。区别:
StringBuffer可以用于单线程和多线程的字符操作;
StringBuilder只能用于单线程的字符操作。
StringBuilder与StringBuffer方法类似,下面仅以StringBuffer为例。

创建

StringBuffer strbuff = new StringBuffer();
StringBuffer strbuff = new StringBuffer(String str);

和String类中一样的方法有:

这里写图片描述
这里写图片描述

StringBuffer具备而String不具备的方法有:

这里写图片描述

——整理自《入门Java很简单》

原创粉丝点击