JavaSE——字符串常用类
1、String类
- String是一个final类
- char[]数组
- 实现了Serializeable接口,是可序列化的
- 实现了comparable接口,可比较大小
- 是不可变的字符序列,简称不可变性
1、字符串重新赋值时,需要重写指定的内存区域赋值,不能使用原有的value数组进行赋值
2、字符串连接操作同上
3、repalce()方法同上上
- 通过字面量(不同于new)给一个字符串赋值,此时字符串声明在字符串常量池中
- 字符串常量池不会存储相同内容的字符串

注意
字符串声明在类当中使用的是字面量赋值,指向的地址值是相同的

面试题
1、String s=new String(“abc”):方式创建对象,在内存中创建了几个对象
两个:一个是堆空间中的new结构,另一个是char[]对应的常量池中的数据"abc",(如果常量池中没有abc就创建,有了就不创建)
2、以5为例,当出现变量名的时候,这时候会在堆当中创建指向方法区"javaEEhadoop"字符串的空间;常量和常量连接就在常量池中


3、下题有打破了引用性数据改变数值随之改变的误区,因为String具有不可变性。

特别的
String s="Hello";
String a=s.intern();//返回值使用的是常量池中已经存在的字符串
System.out.println(s==a);//true
2、String对象的创建
String str="Hello";//字符串常量池
String s=new String()//堆空间中开辟空间
String s=new String("Hello")
String s=new String(char[] a)
String s=new String(char[] a,int startIndex,int count)
3、String类方法
- int length()
- char charAt(int index)
- boolean isEmpty()
- String toLowerCase()
- String toUpperCase()
- int compareTo(String otherString)
- String substring(int beginIndex)
- String substring(int start,int end)
- String trim()//去除首尾空格
- boolean equals(Object obj)
- boolean equalsIgnoreCase(String anotherString)
- String concat(String str)
- boolean endsWith(String suffix):是否以suffix结尾
- boolean startWith(String prefix)
- boolean startWith(String prefix,int toffset)
- boolean contains(CharSquence s)
- int indexOf(String s)
- int indexOf(String s,int fromIndex)
- int lastIndexOf(String s)//还是要从前往后数
- int lastIndexOf(String s,int fromIndex)
- String replace(String old,String new)
- String replaceAll(“正则表达式”,replacement)
- String replaceFirst(“正则表达式”,replacement)
- boolean matches(“正则表达式”)
- String split("\.")//以.进行分割
- char[] s.toCharArray()//字符串转换成字符数组
- byte[] s.getBytes(“gbk”)//将字符串转成字节数组,解码用new String构造器
本文详细介绍了Java SE中的String类,包括其特性(不可变、序列化和比较),对象创建方式(字面量与new)、内存管理(常量池与对象分配),以及常用方法如长度、字符访问、比较、连接等。还涵盖了面试中常见的关于String对象创建和内存分配的问题。
497

被折叠的 条评论
为什么被折叠?



