Java基础:字符串

概述

  • 字符串是一个特殊的对象
  • 字符串一旦初始化就不可以被改变

字符串的创建方式

String str1 = "abc";
String str2 = new String("abc");

str1 和 str2 有什么区别?

  • s1 在内存中有一个对象
  • s2 在内存中有两个对象
System.out.println(str1 == str2);     //false 比较地址是否相同
System.out.println(str1.equals(str2));  //true  比较字符串的内容是否相同。

字符串常见操作

获取

  • 获取长度
int length();  //返回字符串的长度。
  • 根据位置获取某个字符
char charAt(int index); //根据数组元素的角标值来获取某个元素。
  • 根据字符获取位置
//这里的 int ch 指的是字符在 ASCII 码中的对应数字。

//返回的是 ch 在字符串中第一次出现的位置
int indexOf(int ch); 

//返回的是 ch 在字符串中第一次出现的位置
int indexOf(int ch, int fromIndex); 

//返回的是字符串 str 在字符串中第一次出现的位置
int indexOf(String str)

//从 fromIndex 这个位置开始,获取字符串 str 在字符串中出现的位置
int indexOf(String str, int fromIndex); 

//这里跟上面的 indexOf() 类似,只不过是倒序查找,也有四种重载的方法。
int lastIndexOf(int ch);
...
...
...

判断

  • 判断字符串中是否包含某一个子串
//其实与获取中的 indexOf(String str) 方法效果也是相同的,返回值为 -1 时即包含不存在。
boolean contains(String str);  
  • 判断字符串是否为空
//其实就是判断字符串长度是否等于 0
boolean isEmpty();  
  • 判断字符串是否以指定内容开头
boolean startsWith(String str);
  • 判断字符串是否以指定内容结尾
boolean endsWith(String str);

转换

  • 将字符数组转成字符串
构造函数:String(char[])
          String(char[],offset,count); //从 offset开始,一共 count 个

静态方法:
        static String copyValueOf(char[] data);
        static String copyValueOf(char[] data, int offset, int count); 

        static String valueOf(char[] data);   
  • 将字符串转成字符数组
char[] toCharArray();
  • 将字节数组转成字符串
String(byte[]);
String(byte[],offset,count); //将字节数组中的一部分转成字符串。
  • 将字符串转成字节数组
byte[]  getBytes();
  • 将基本数据类型转成字符串
static String valueOf(int);
static String valueOf(double);
...
...
...

替换

//将字符串中所有的 oldchar 替换为 newchar,如果要替换的字符不存在,那么返回的还是原字符串
String replace(char oldchar,char newchar); 

//可以根据正则表达式进行替换
String replaceAll(String regex, String replacement);  

切割

String[] split(String regex);  //将字符串根据某种规则进行切割。

String str = "zhangsan,lisi,wangwu";
String[] arr = str.split(",");

然后字符串数组 arr 中的结果就是三个字符串  zhagnsan   lisi   wangwu

子串

String substring(int begin);    //从指定位置开始到结尾

//包含头,不包含尾 对字符串 "abcdefg" substring(2,4) 的结果是 "cd"
String substring(int begin, int end);   

其他操作

String toUpperCase(); //转换为大写
String toLowerCase();  //转换为小写

String trim();  //去除两端空格。

//按照自然顺序进行比较,到第一个不相同的字符上,进行 ASCII 比较,返回相差数。
int compareTo(String str);