【JAVA |String类】JAVA中的String类常见用法详解

2024-06-08 1106阅读

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 

🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈

【JAVA |String类】JAVA中的String类常见用法详解

✨✨ 帅哥美女们,我们共同加油!一起进步!✨✨ 

目录

一、前言

二、字符串常量

三、String类型

四、字符串构造

1.使用常量串进行构造

2.使用new String对象

3.使用字符数组进行构造

四、String对象的比较

1.==比较是否引用同一对象

2.boolean equals(Object anObject) 方法:按照字典序比较

3.int compareTo(String s) 方法: 按照字典序进行比较

4.int compareToIgnoreCase(String str) 方法:忽略大小写

五、字符串查找

六、转换

1.数值和字符串转化

​编辑

2.大小写转换

3.字符串转数组

​编辑

4.去字符串中的左右空格

七、字符串替换

八、字符串拆分

九、字符串截取

​编辑

十、StringBuilder和StringBuffer


一、前言

在JAVA中的字符串存储是可以直接使用String这个引用数据类型,不像C语言表示字符串只能使用字符数组或者字符指针,使我们操作起来更方便,更符合不符合面相对象的思想。


二、字符串常量

String类对象的直接赋值: 将一个匿名对象设置一个具体的引用,相当于开辟一个栈内存,指向这个匿名对象,这个匿名对象是存在堆内存的。

String arr1 = "abcd";
String arr2 = "abcd";

所以相同的字符串常量可以有多个对象指向

【JAVA |String类】JAVA中的String类常见用法详解


三、String类型

String是引用类型,内部并不存储字符串本身,我们来看一下String类的实现源码,字符串实际保存在char类型的数组中,并且final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的。

【JAVA |String类】JAVA中的String类常见用法详解

看这样一段代码,大家可能大家会想到这个是在arr1的自身增加了一段字符串
String arr1 = new String("abcd");
arr1 += "ooooo";
System.out.println(arr1);
【JAVA |String类】JAVA中的String类常见用法详解 但是他的实现过程却是新对象 【JAVA |String类】JAVA中的String类常见用法详解 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象, 尽量避免直接对 String 类型对象进行修改,因为 String 类是不能修改的,所有的修改都会创建新对象,效率 非常低 如果要修改建议尽量使用StringBuffer 或者 StringBuilder

四、字符串构造

常用的构造方法下面三种构造方法


1.使用常量串进行构造

String arr1 = "abcdefg";
System.out.println("arr1 =" + arr1);

【JAVA |String类】JAVA中的String类常见用法详解


2.使用new String对象

String arr2 = new String("abcdefg");
System.out.println("arr2 =" + arr2);

【JAVA |String类】JAVA中的String类常见用法详解


3.使用字符数组进行构造

char[] ch = {'a','b','c','d','e','f','g'};
String arr3 = new String(ch);
System.out.println("arr3 =" + arr3);

【JAVA |String类】JAVA中的String类常见用法详解


四、String对象的比较

字符串的比较JAVA中提供了四种常见的方法


1.==比较是否引用同一对象

对于内置类型,==比较的是两个对象的值;但对引用类型,==对比的是两个对象的地址

        String arr1 = new String("abcd");
        String arr2 = new String("abcd");
        
        String arr3 = "abcd";
        String arr4 = "abcd";
        
        System.out.println(arr1 == arr2);
        System.out.println(arr3 == arr4);

理论上来说这四个字符串相等,应该都输出true

【JAVA |String类】JAVA中的String类常见用法详解

但是arr1跟arr2 为两个对象所以地址不同,而arr3和arr4指向同一字符串常量地址相同

【JAVA |String类】JAVA中的String类常见用法详解


2.boolean equals(Object anObject) 方法:按照字典序比较

String 类重写了父类 Object 中 equals 方法,只比较字符串的内容,相同返回true,不同返回false
String arr1 = new String("abcd");
String arr2 = new String("abcd");
String arr3 = new String("oooo");
System.out.println(arr1.equals(arr2));
System.out.println(arr1.equals(arr3));

【JAVA |String类】JAVA中的String类常见用法详解


3.int compareTo(String s) 方法: 按照字典序进行比较

compareTo 返回的是 int 类型,大于返回一个大于0的数字,小于返回小于0的数字。相等返回0.
String arr1 = new String("abcd");
String arr2 = new String("abcd");
String arr3 = new String("oooo");
System.out.println(arr1.compareTo(arr2));
System.out.println(arr1.compareTo(arr3));
System.out.println(arr1.compareTo(arr3));

【JAVA |String类】JAVA中的String类常见用法详解


4.int compareToIgnoreCase(String str) 方法:忽略大小写

忽略大小写的比较,大于返回一个大于0的数字,小于返回小于0的数字。相等返回0.

String arr1 = new String("abcd");
String arr2 = new String("ABcd");
String arr3 = new String("oood");
System.out.println(arr1.compareToIgnoreCase(arr2));
System.out.println(arr1.compareToIgnoreCase(arr3));
System.out.println(arr1.compareToIgnoreCase(arr3));

【JAVA |String类】JAVA中的String类常见用法详解


五、字符串查找

常见的String类提供的常用查找的方法有下面这些

方法功能
char charAt(int index) 返回 index 位置上字符,index为负数或越界,抛IndexOutOfBoundsException异常
int indexOf(int ch) 返回 ch 第一次出现的位置,没有返回 -1
int indexOf(int ch, int fromIndex) 从 fromIndex 位置开始找 ch 第一次出现的位置,没有返回 -1
int indexOf(String str) 返回 str 第一次出现的位置,没有返回 -1
int indexOf(String str, int fromIndex) 从 fromIndex 位置开始找 str 第一次出现的位置,没有返回 -1
int lastIndexOf(int ch, int  fromIndex) 从 fromIndex 位置开始找,从后往前找 ch 第一次出现的位置,没有返回-1
int lastIndexOf(int ch) 从后往前找,返回 ch 第一次出现的位置,没有返回 -1
int lastIndexOf(String str) 从后往前找,返回 str 第一次出现的位置,没有返回 -1
int lastIndexOf(String str, int fromIndex) 从 fromIndex 位置开始找,从后往前找 str 第一次出现的位置,没有返 回 -1
 String arr1 = "abcda2bc1do1ab2oocdzbc2d";
System.out.println(arr1.charAt(3)); //下标为3的元素 -》d
System.out.println(arr1.indexOf('c')); //字符c,字符串中第一次出现的下标 -》2
System.out.println(arr1.indexOf('c',8)); //字符c,字符串中从下标八开始第一次出现的下标 -》17
System.out.println(arr1.indexOf("ab")); //字符串ab,字符串中第一次出现的下标 -》0
System.out.println(arr1.indexOf("ab",3)); //字符ab,字符串中从下标三开始第一次出现的下标 -》12
System.out.println(arr1.lastIndexOf('d')); //字符d,字符串中从最后开始倒着找第一次出现的下标 -》23
System.out.println(arr1.lastIndexOf('d',6)); //字符d,字符串中从下标6开始倒着找第一次出现的下标 -》3
System.out.println(arr1.lastIndexOf("cd")); //字符串cd,字符串中从最后开始倒着找第一次出现的下标 -》17
System.out.println(arr1.lastIndexOf("cd",6)); //字符串cd,字符串中从下标6开始倒着找第一次出现的下标 -》2

【JAVA |String类】JAVA中的String类常见用法详解


六、转换

1.数值和字符串转化

不光是整形,浮点跟布尔类型都可以转换为字符串

String arr1 = String.valueOf(123);
String arr2 = String.valueOf(12.3);
String arr3 = String.valueOf(true);
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);

【JAVA |String类】JAVA中的String类常见用法详解

字符串转其他类型需要用到包装类型

int num1 = Integer.parseInt("123");
double num2 = Double.parseDouble("123");
System.out.println(num1);
System.out.println(num2);

【JAVA |String类】JAVA中的String类常见用法详解


2.大小写转换

String arr1 = "aaa";
String arr2 = "BBB";
System.out.println(arr1.toUpperCase());//转大写
System.out.println(arr2.toLowerCase());//转小写

【JAVA |String类】JAVA中的String类常见用法详解


3.字符串转数组

字符串转数组

String arr1 = "abcd";
char[] ch = arr1.toCharArray();
for (int i = 0; i 字符、字符串、整形数字
sb1.append(' '); // hello
sb1.append("world"); // hello world
sb1.append(123); // hello world123
System.out.println(sb1); // hello world123
System.out.println(sb1 == sb2); // true
System.out.println(sb1.charAt(0)); // 获取0号位上的字符 h
System.out.println(sb1.length()); // 获取字符串的有效长度14
System.out.println(sb1.capacity()); // 获取底层数组的总大小
sb1.setCharAt(0, 'H'); // 设置任意位置的字符 Hello world123
sb1.insert(0, "Hello world!!!"); // Hello world!!!Hello world123
System.out.println(sb1);
System.out.println(sb1.indexOf("Hello")); // 获取Hello第一次出现的位置
System.out.println(sb1.lastIndexOf("hello")); // 获取hello最后一次出现的位置
sb1.deleteCharAt(0); // 删除首字符
sb1.delete(0,5); // 删除[0, 5)范围内的字符
String str = sb1.substring(0, 5); // 截取[0, 5)区间中的字符以String的方式返回
System.out.println(str);
sb1.reverse(); // 字符串逆转
str = sb1.toString(); // 将StringBuffer以String的方式返回
System.out.println(str);
}
String 和 StringBuilder 最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可 以修改 。频繁修改字符串的情况考虑使用 StringBuilder

希望对你有帮助

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]