Java之String类

一、String类常用方法

1.引用类型的比较

我们知道在Java中两个引用遍历是不能用" == "号来比较的,而String类重写了父类objects的equals方法, 实现了引用类型的比较

例子

import java.util.Scanner;

public class Main {

public static void main(String\[\] args) {

String str1 = "hello world";

String str2 = "hello world";

String str3 = "hello xiao_yu_er";

// equals方法返回值是boolean类型,相等返回true,不等返回false

System.out.println(str1.equals(str2)); // true

System.out.println(str1.equals(str3)); // false

}

}

除了equals,String还为我们提供了一些其他的字符串比较方法

compareTo方法:按照字典序进行比较

与equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型。具体比较方式:

  1. 先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值

  2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值

例子

import java.util.Scanner;

public class Main {

public static void main(String\[\] args) {

String str1 = "hello a";

String str2 = "hello z";

String str3 = "hello anna";

// 返回类型是int,前几个字符都相同,最后一个不同------返回'a'和'z'字符的Ascii码的差值

System.out.println(str1.compareTo(str2)); // -25

// str1所有的字符和str3都相同,但str3多了几个不同的字符,返回值str1和str3两个字符串长度差值

System.out.println(str1.compareTo(str3)); // -3

}

}

compareToIgnoreCase:与compareTo方式相同,但是忽略大小写比较

2.字符串查找方法

方法功能carAt(int index)

返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常

indexOf(String str返回str第一次出现的位置,没有返回-1

lastIndexOf(String str)

从后往前找,返回str第一次出现的位置,没有返回-1

例子

import java.util.Scanner;

public class Main {

public static void main(String\[\] args) {

String str1 = "hello world!";

char ch = str1.charAt(0); // 获取0下标的字符

System.out.println("该字符串中0下标的字符为:" + ch);

int index1 = str1.indexOf("l"); // 记录字符串"l"在str1中第一次出现的位置,从前往后找,没有返回-1

System.out.println("从前往后找,字符串"l"第一次出现的位置是:" + index1);

int index2 = str1.lastIndexOf("l"); // 从后往前找,返回"l"第一次出现的位置,没有返回-1

System.out.println("从后往前找,字符串"l"第一次出现的位置是:" + index2);

}

}

3.字符串与数组、数字之间的转换

方法介绍都在代码中:

import java.util.Locale;

import java.util.Scanner;

public class Main {

public static void main(String\[\] args) {

// 数字和字符串之间的转换

String str1 = String.valueOf(1234); // 将数字1234转换成字符串"1234"

double date1 = Double.parseDouble("76.2"); // 将字符串"76.2"转换成double类型的数字:76.2

System.out.println(str1);

System.out.println(date1);

// 大小写转换

String s1 = "XIAO YU ER";

String s2 = "student";

String s3 = s1.toLowerCase(); // 大写转小写

System.out.println("大写转小写的转换结果是:" + s3);

System.out.println("小写转大写的转换结果是:" + s2.toUpperCase()); // 小写转大写

// 字符串和字符数组之间的转换

String str2 = "hello word";

char\[\] ch1 = str2.toCharArray(); // 字符串转字符数组

for (char tmp:

ch1) {

System.out.print(tmp + " ");

}

System.out.println("======我是分割线=======");

char\[\] ch2 = new char\[\]{'a','b', 'c', 'd', 'e'};

String str3 = new String(ch2); // 字符数组转字符串

System.out.println("字符数组转字符串的转换结果是:" + str3);

}

4. 字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下

方法功能(返回类型是String) replaceAll(String regex, String replacement)替换所有的指定内容(返回类型是String) replaceFirst(String regex, String replacement)替换首个内容

例子

public class String_method_Test {

public static void main(String\[\] args) {

String str1 = "hello world!";

System.out.println("替换全部的"l"后的结果是:" + str1.replaceAll("l", "*"));

System.out.println("替换掉第一个"l"后的结果是:" + str1.replaceFirst("l", "&"));

}

}

注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串

5.字符串的拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串

方法功能split(String regex) (返回值的类型:String\[\] )将字符串全部拆分split(String regex, int limit) (返回值的类型:String\[\] )将字符串以指定的格式,拆分为limit组

例子

public class String_method_Test {

public static void main(String\[\] args) {

String str1 = "hello xiao yu";

String\[\] s1 = str1.split(" "); // 以空格,来进行全部拆分

for (String tmp :

s1) {

System.out.println(tmp);

}

System.out.println("=====我是分割线======");

String\[\] s2 = str1.split(" ", 2); // 按空格,拆分为两组

for (int i = 0; i < s2.length; ++i) {

System.out.println(s2i);

}

}

}

拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义.

例子: 拆分IP地址

public class String_method_Test {

public static void main(String\[\] args) {

String str1 = "127.0.0.1";

String\[\] s = str1.split("\\."); // 注意一定要加上转义字符

for (int i = 0; i < s.length; ++i) {

System.out.println(si);

}

System.out.println("====我是分割线====");

String str2 = "name=小鱼儿&age=19";

String\[\] s2 = str2.split("&");

// 多次拆分

for (int i = 0; i < s2.length; ++i) {

String\[\] tmp = s2i.split("=");

for (int j = 0; j < tmp.length; ++j) {

System.out.println(tmpj);

}

}

}

}

注意事项:

  1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .

  2. 而如果是 "\" ,那么就得写成 "\\\\" .

  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

6.字符串截取

从一个完整的字符串之中截取部分内容:

方法功能String substring(int beginIndex)从指定索引截取到结尾String substring(int beginIndex, int endIndex)截取部分内容

例子

public class String_method_Test {

public static void main(String\[\] args) {

String str1 = "hello xiaoyu";

// 从指定索引截取到结尾

String s1 = str1.substring(6);

System.out.println(s1);

// 截取部分内容

String s2 = str1.substring(6, 10);

System.out.println(s2);

}

}

注意事项:

  1. 索引从0开始

  2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标

其他一些操作方法

方法功能String trim()去掉字符串中的左右空格,保留中间空格String toUpperCase()字符串转大写String toLowerCase()字符串转小写

trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)

相关推荐
心祭丫丫22 分钟前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
爱你真是太好了36 分钟前
Skill 索引瘦身与渐进加载
python
贾公子39 分钟前
检测链路的容量规划——用 Little's Law 算清 QPS、并发与积压
后端·python
露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力1 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力1 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3761 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
ATMQuant1 小时前
量化策略开发08:Lasso因子选择 - 因子动物园的断舍离
python·量化交易·lasso·vnpy·多因子选股
金銀銅鐵1 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng3 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试