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(s2[i]);

}

}

}

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

例子: 拆分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(s[i]);

}

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

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

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

// 多次拆分

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

String[] tmp = s2[i].split("=");

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

System.out.println(tmp[j]);

}

}

}

}

注意事项:

  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 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)

相关推荐
爱编程的鱼5 小时前
OpenCV Python 绑定:原理与实战
c语言·开发语言·c++·python
这周也會开心5 小时前
云服务器安装JDK、Tomcat、MySQL
java·服务器·tomcat
hrrrrb6 小时前
【Spring Security】Spring Security 概念
java·数据库·spring
小信丶6 小时前
Spring 中解决 “Could not autowire. There is more than one bean of type“ 错误
java·spring
sdgsdgdsgc6 小时前
Next.js企业级应用开发:SSR、ISR与性能监控方案
开发语言·前端·javascript
周杰伦_Jay7 小时前
【Java虚拟机(JVM)全面解析】从原理到面试实战、JVM故障处理、类加载、内存区域、垃圾回收
java·jvm
晓风残月淡7 小时前
JVM字节码与类的加载(二):类加载器
jvm·python·php
西柚小萌新9 小时前
【深入浅出PyTorch】--上采样+下采样
人工智能·pytorch·python
rit843249910 小时前
基于MATLAB的模糊图像复原
开发语言·matlab
fie888910 小时前
基于MATLAB的声呐图像特征提取与显示
开发语言·人工智能