wordpress耗资源升级程序,关键词优化排名公司,南宁seo推广经验,辛集seo网站优化作为一个常用的数据类型#xff0c;跟随小编一同进入String的学习吧#xff0c;领略String的一些用法。
1. 认识 String 类
2. 了解 String 类的基本用法
3. 熟练掌握 String 类的常见操作
4. 认识字符串常量池
5. 认识 StringBuffer 和 StringBuilder
一#xff1a;…作为一个常用的数据类型跟随小编一同进入String的学习吧领略String的一些用法。
1. 认识 String 类
2. 了解 String 类的基本用法
3. 熟练掌握 String 类的常见操作
4. 认识字符串常量池
5. 认识 StringBuffer 和 StringBuilder
一认识String类 1.概念String是编程语言中表示字符串的数据类型。字符串是由零个或多个字符组成的有限序列通常用于表示文本。 2.表示方法在大多数编程语言中字符串使用双引号括起来如hello就是一个字符串。 例如如下相关题目 字符串相加 二了解 String 类的基本用法 1.获取字符串信息 length()返回字符串的长度。 charAt(int index)返回指定索引处的字符。 isEmpty()判断字符串是否为空。 2.字符串转换 toLowerCase()将字符串中的所有字符转换为小写。 toUpperCase()将字符串中的所有字符转换为大写。 trim()返回字符串的副本忽略前导空白和尾部空白。 3.字符串比较 equals(Object obj)比较字符串的内容是否相同。 equalsIgnoreCase(String anotherString)与equals方法类似但忽略大小写。 compareTo(String anotherString)比较两个字符串的大小。 4.字符串截取 substring(int beginIndex)返回一个新的字符串它是此字符串从beginIndex开始截取到字符串结尾的一个子字符串。 substring(int beginIndex, int endIndex)返回一个新的字符串它是此字符串从beginIndex开始截取到endIndex不包含的一个子字符串。 5.字符串判断 endsWith(String suffix)测试此字符串是否以指定的后缀结束。 startsWith(String prefix)测试此字符串是否以指定的前缀开始。 contains(CharSequence s)当且仅当此字符串包含指定的char值序列时返回true。 6.字符串索引 indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。 lastIndexOf(String str)返回指定子字符串在此字符串中最右边出现处的索引。 7.字符串拼接 使用运算符或append()方法可以将多个字符串拼接在一起。 三熟练掌握 String 类的常见操作
public class StringDemo { public static void main(String[] args) { String str1 HelloWorld; String str2 ; // 获取字符串长度 System.out.println(str1.length()); // 获取指定索引处的字符 System.out.println(str1.charAt(0)); // 判断字符串是否为空 System.out.println(str1.isEmpty()); System.out.println(str2.isEmpty()); // 字符串转换 str2 str1.toUpperCase(); System.out.println(str2); str2 str2.toLowerCase(); System.out.println(str2); // 字符串比较 System.out.println(str1.equals(str2)); System.out.println(str1.equalsIgnoreCase(str2)); // 字符串截取 System.out.println(str1.substring(2)); System.out.println(str1.substring(1, 3)); // 字符串判断 System.out.println(str1.endsWith(rld)); System.out.println(str1.startsWith(He)); System.out.println(str1.contains(wor)); // 字符串索引 System.out.println(str1.indexOf(wo)); System.out.println(str1.lastIndexOf(o)); // 字符串拼接 String str3 str1 abc; System.out.println(str3); }
}注意final修饰类表明该类不想被继承final修饰引用类型表明该引用变量不能引用其他对象但是其引用对象中的内容是可以修改的。 四认识字符串常量池 常量池为了提高性能和减少内存消耗Java等语言引入了字符串常量池。相同内容的字符串在常量池中只存储一份不同变量可以引用同一份字符串。 字符串常量池的优点 1.减少内存占用通过重用字符串对象避免了重复创建相同的字符串对象从而减少了内存占用。 2.提高性能由于减少了字符串对象的创建和销毁操作因此提高了程序的性能。
// 示例1
String s1 abc;
String s2 abc;
System.out.println(s1 s2); // 输出true // 示例2
String s3 new String(abc);
String s4 new String(abc);
System.out.println(s3 s4); // 输出false // 示例3
String s5 new String(abc);
String s6 abc;
System.out.println(s5 s6); // 输出false // 示例4
String s7 new String(abc).intern();
String s8 abc;
System.out.println(s7 s8); // 输出true示例1由于s1和s2都是通过字面量方式创建的字符串且内容相同因此它们指向的是同一个字符串对象在常量池中的引用。 示例2s3和s4都是通过new关键字创建的字符串对象它们在堆中分别占有一个独立的空间因此s3和s4不相等。 示例3s5是通过new关键字创建的字符串对象在堆中占有一个独立的空间而s6是通过字面量方式创建的字符串指向的是常量池中的字符串对象。因此s5和s6不相等。 示例4s7首先通过new关键字在堆中创建了一个字符串对象然后通过intern()方法将该字符串对象加入到常量池中并返回常量池中该字符串的引用。由于s8是通过字面量方式创建的字符串指向的是常量池中的字符串对象因此s7和s8相等。 五认识 StringBuffer 和 StringBuilder StringBuilder和StringBuffer都是Java中用于创建和操作可变字符串的类它们提供了比String类更高效的字符串操作方法特别是在需要频繁修改字符串内容的情况下。 StringBuilder 1.概述
1.1 StringBuilder是Java中的一个类属于java.lang包。 1.2 它用于创建可变的字符序列即可以对其内容进行添加、删除、替换等操作而不会创建新的对象。 2.特点
2.1 可变性StringBuilder对象是可变的修改操作不会创建新的对象。 2.2 性能由于不会频繁创建新的对象StringBuilder在进行大量字符串拼接或修改操作时性能较高。 2.3 线程不安全StringBuilder是非线程安全的即不支持多线程环境下的并发操作但在单线程环境中效率较高。 3.构造方法
3.1 无参构造方法创建一个初始容量为16的StringBuilder对象。 3.2 指定初始容量的构造方法创建一个具有指定初始容量的StringBuilder对象。 3.3 通过字符串初始化的构造方法使用指定字符串初始化StringBuilder对象。 4.常用方法
append()追加字符串到当前StringBuilder对象的末尾。 insert()在指定位置插入字符串。 delete()删除指定范围内的字符。 deleteCharAt()删除指定位置的字符。 replace()替换指定范围内的字符。 reverse()将字符序列进行反转。 setCharAt()修改指定位置的字符。 substring()返回指定范围内的子字符串。 capacity()返回当前StringBuilder对象的容量。 length()返回当前StringBuilder对象的长度字符数。 ensureCapacity()确保StringBuilder具有最小的容量。 trimToSize()调整StringBuilder的容量使其等于字符序列的长度。 5.底层原理
5.1 StringBuilder内部使用可变字符数组在JDK 9及以后版本中使用字节数组但逻辑上仍视为字符数组存储字符序列。 5.2 当进行字符串操作时如追加、插入或删除字符StringBuilder会相应地调整其内部数组的大小和内容。 StringBuffer 1.概述
1.1 StringBuffer也是Java中的一个类同样属于java.lang包。 1.2 它与StringBuilder类似都用于创建可变的字符序列。 2.特点
2.1 可变性StringBuffer对象也是可变的。 2.2 性能StringBuffer在进行大量字符串拼接或修改操作时性能也较高但由于其线程安全的特性相对于StringBuilder可能会有一定的性能开销。 2.3 线程安全StringBuffer是线程安全的即支持多线程环境下的并发操作。 3.构造方法
3.1 StringBuffer的构造方法与StringBuilder类似包括无参构造方法、指定初始容量的构造方法和通过字符串初始化的构造方法。 4.常用方法
4.1 StringBuffer的常用方法与StringBuilder几乎相同包括append()、insert()、delete() deleteCharAt()、replace()、reverse()、setCharAt()、substring()等。 4.2 需要注意的是由于StringBuffer是线程安全的因此其方法实现中包含了同步机制使用synchronized关键字以确保在多线程环境下的正确性。 5.使用场景
5.1 当需要在多线程环境中安全地操作字符串时应使用StringBuffer。 5.2 在单线程环境中如果不需要线程安全的特性为了获得更高的性能建议使StringBuilder。 StringBuilder和StringBuffer都是Java中用于创建和操作可变字符串的类它们提供了丰富的字符串操作方法。在选择使用哪个类时应根据具体的应用场景和需求来决定。如果需要线程安全的特性则选择StringBuffer如果不需要线程安全的特性且追求更高的性能则选StringBuilder。 在面试中也频繁被问到比如String、StringBuff和StringBulider之间的区别 1.String的内容不可修改StringBuffer与StringBuilder的内容可以修改. 2.StringBuffer与StringBuilder大部分功能是相似的 3.StringBuffer采用同步处理属于线程安全操作而StringBuilder未采用同步处理属于线程不安全操作