网站上面的在线咨询是怎么做的,做购物网站的素材,怎么用ai做网站版面,做打牌的网站怎么办目录 1、String类的重要性
2、常用方法
2、1 字符串构造
2、2 String对象的比较
2、3 字符串查找 2、4字符转换
数值和字符串转换#xff1a;
大小写转化#xff1a; 字符串转数组#xff1a;
格式转化#xff1a;
2、5 字符串替换
2、6字符串拆分 2、7 字符串…目录 1、String类的重要性
2、常用方法
2、1 字符串构造
2、2 String对象的比较
2、3 字符串查找 2、4字符转换
数值和字符串转换
大小写转化 字符串转数组
格式转化
2、5 字符串替换
2、6字符串拆分 2、7 字符串截取
3、String字符串的不可变性
4、 认识StringBuffer和StringBuilder
4、1StringBuffer
4、2StringBuilder 1、String类的重要性
在C语言中已经涉及到字符串了但是在C语言中要表示字符串只能使用字符数组或者字符指针可以使用标准库提供的字符串系列函数完成大部分操作但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想而字符串应用又非常广泛因此Java语言专门提供了String类。在开发和校招笔试中字符串也是常客而且在面试中也频繁被问到比如String、StringBuff和StringBulider之间的区别等。
2、常用方法
2、1 字符串构造
String类提供的构造方法常用的是以下三种
使用常量字符串构造直接newString类对象使用字符数组进行构造 public class Test {public static void main(String[] args) {//1、使用常量字符串构造String str1Hello;//2、直接newString类对象String str2new String(Hello);//3、使用字符数组进行构造char[] array{H,e,l,l,o};String str3new String(array);}
} 【注意】
1、String类是引用类型内部并不储存字符串本身
2、Java中引起来的也是String类对象
2、2 String对象的比较
1、比较是否为同一个对象
对于内置类型是比较变量的值而引用类型比较的是引用中的地址。 String str1Hello;
String str2new String(Hello);
System.out.println(str1str2);//结果为false2、boolean equals(Obeject anObeject)方法,比较内容是否相同
String类重写了父类Object中equals方法Object中equals默认按照比较String重写equals方法后按照如下规则进行比较比如str1.equals(str2) String str1Hello;
String str2new String(Hello);
String str3world;
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//false3、int compareTo(String s)方法按照字典序比较
与equals不同的是equals返回的是boolean类型而compareTo返回的是int类型。具体比较方式
先按照字典次序大小比较如果出现不等的字符直接返回这两个字符的大小差值如果前K个字符相等返回两串字符串长度差值
4、int compareTolgnoreCase(String str)方法与compareTo方法相同但忽略大小写比较 String str1abc;
String str2new String(ABC);
String str3Abdef;
System.out.println(str1.compareToIgnoreCase(str2));//0
System.out.println(str1.compareToIgnoreCase(str3));//-1
System.out.println(str2.compareToIgnoreCase(str3));//-1 2、3 字符串查找
字符串查找方法 方法功能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第一次出现的位置没有返回-1int indexOf(String str, int fromIndex) 从fromIndex位置开始找str第一次出现的位置 没有返回-1 int lastIndexOf(int ch) 从后往前找返回ch第一次出现的位置没有返回-1int lastIndexOf(int ch, int fromIndex) 从fromIndex位置开始找从后往前找ch第一次出现的位置没有返回-1 int lastIndexOf(String str)从后往前找返回str第一次出现的位置没有返回-1int lastIndexOf(String str, int fromIndex 从fromIndex位置开始找从后往前找str第一次出现的位置 没有返回-1 String str1Hello,world,Hello;//长度为17System.out.println(str1.charAt(6));//w
System.out.println(str1.indexOf(o));//4
System.out.println(str1.indexOf(l,8));//9
System.out.println(str1.indexOf(Hello));//0
System.out.println(str1.indexOf(Hello,0));//0
System.out.println(str1.lastIndexOf(l));//15
System.out.println(str1.lastIndexOf(l,16));//15
System.out.println(str1.lastIndexOf(Hello));//12
System.out.println(str1.lastIndexOf(Hello,10));//0上述方法都是实例方法 2、4字符转换
数值和字符串转换
valueOf用于将其他形式转化为字符串有许多重载方法。 代码演示 public class Student {String name;int age;public Student(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };}
} public class Test {public static void main(String[] args) {String str1String.valueOf(123);String str2String.valueOf(true);String str3String.valueOf(new Student(lisi,18));System.out.println(str1);//123System.out.println(str2);//trueSystem.out.println(str3);//Student{namelisi, age18}}
} 大小写转化
大写转小写toLowerCase()小写转大写toUpperCase() String str1Hello;
String str2World;
//小写转大写
System.out.println(str1.toUpperCase());//HELLO
//大写转小写
System.out.println(str2.toLowerCase());// world 字符串转数组
toCharArray() String str1Hello;
char[]array str1.toCharArray();for (int i 0; i array.length; i) {System.out.println(array[i]);} 格式转化
format String sString.format(%d-%d-%d,2024,7,5);
System.out.println(s);//2024-7-5 2、5 字符串替换
使用一个指定的新的字符串替换已有的字符串数可用方法如下
方法功能String replaceAll(String regex, String replacement) 替换所有的指定内容String replaceFirst(String regex, String replacement) 替换收个内容方法
代码示例 String str1Helloworld;System.out.println(str1.replace(H,h));
System.out.println(str1.replaceFirst(l,L)); 【注意】由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.
2、6字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。 可用方法如下
方法功能String[] split(String regex)将字符串全部拆分String[] split(String regex,int limit)将字符串以定义的格式拆分为limit组
代码实例 【注意】
有些特殊字符作为分隔符无法正确切分需要加上转义。 | 、 * 、 都得加上转义字符前面加上\\ \ 前面要加上 \\\\如果有多个分隔符用 | 作为连字符 2、7 字符串截取 从一个完整的字符串之中截取部分内容可用方法
方法功能String substring ( int beginindex )从指定索引截取到结尾String substring(int bwginindex ,int endindex )截取部分内容
【注意】 索引从0开始注意前闭后开的用法 substring 】 3、String字符串的不可变性
String类是一种不可变对象字符串中内容是不可改变的。这是因为
1、String类在设计时就是不可改变的 String类中的字符实际保存在内部维护的value字符数组中该图还可以看出 String类被final修饰表明该类不能被继承 value被修饰被final修饰表明value自身的值不能改变即不能引用其它字符数组但是其引用空间中的内容可以修改。 2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象改变的是新对象
” 字符串不可变是因为其内部保存字符的数组被final修饰了因此不能改变。”这种说法是错误的不是因为String类自身或者其内部value被final修饰而不能被修改。 final修饰类表明该类不想被继承final修饰引用类型表明该引用变量不能引用其他对象但是其引用对象中的内容是可以修改的。
4、 认识StringBuffer和StringBuilder
4、1StringBuffer
StringBuffer类是Java提供的一个可变字符串序列类在java.lang包中定义。它与String类相似但有一个重要的区别String类是不可变的即创建后不能更改其内容而StringBuffer类则可以在原地修改字符串。 需要注意的是由于StringBuffer是为了线程安全而设计的。在多线程环境下建议使用线程安全的StringBuffer类以确保数据的一致性。
4、2StringBuilder
StringBuilder类是Java提供的一个可变字符串序列类与StringBuffer类类似但不同的是StringBuilder不是线程安全的。StringBuilder类位于java.lang包中。
以下是StringBuilder类的一些重要特性 在单线程环境下通过使用StringBuilder类我们可以方便地进行字符串的动态操作和修改并能够高效地处理字符串操作的需求。
面试题String、StringBuffer和StringBuilder的异同 相同点底层都是通过char数组实现的 不同点 String对象一旦创建其值是不能修改的如果要修改会重新开辟内存空间来存储修改之后的对象而StringBuffer和StringBuilder对象的值是可以被修改的 StringBuffer几乎所有的方法都使用synchronized实现了同步线程比较安全在多线程系统中可以保证数据同步但是效率比较低而StringBuilder 没有实现同步线程不安全建议在单线程中使用 StringBuilder效率比较高。 如果我们在实际开发过程中需要对字符串进行频繁的修改不要使用String否则会造成内存空间的浪费当需要考虑线程安全的场景下使用 StringBuffer如果不需要考虑线程安全追求效率的场景下可以使用 StringBuilder。