String类在系统中被final关键字修饰,无法创建子类
一、内存模型
常量:
常量即"“括起的字符序列,例如"csdn”,“java”,在Java的内存模型中,String常量作为一个类被储存在常量池中。常量池中储存该对象的实体与引用。
需要注意的是,只要程序中运行到的部分存在String常量,在常量池中便会生成该对象的实体与引用并返回引用(若该String常量在之前的运行过程中已出现,则直接返回引用)
String s1,s2,s3;
s1="你好”;
//常量池中生成"你好"类的实体与引用(假设为12AB),返回12AB,12AB这个引用被赋值给s1这个引用
s2="很不好"
常量池中生成"很不好"类的实体与引用(假设为12AC),返回12AC,12AC这个引用被赋值给s2这个引用
s3="你好"
//常量池中已有"你好类"的实体与引用,直接返回引用,即返回12AB,被赋值给s3这个引用
非常量
String非常量类储存在动态区,String非常量类的声明为String s=new String("asdasdas")
例子分析:
String s1=new String("hei");
//创建引用s1(假设为AABF)并创建“hei”实体
String s2=new String("hei");
//创建引用s2(假设为AAAS)并创建“hei”实体
//需要注意的是,尽管两个“hei”相同,但内存不同,不同于常量内存模型
二、构造方法
String()
以空字符序列初始化新创建的 String对象
String(char[] value)
以字符数组初始化新创建的String对象
String(char[] value, int offset, int count)
以字符数组从offset
下标开始的后count
位字符序列初始化新创建的String对象
String(String original)
用字符串初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
三、基本方法
+
二元运算符可对两个String对象进行首尾相接
public int length()
返回字符串长度
public boolean equals(String s)
方法判断该String对象与s是否相同,是则返回true,否则false(注意不能直接判断s1==s2,因为此时进行的是两个引用的比较,而不是实体间的比较)
public boolean startsWith(String s)
,public boolean endsWith(Strings)
返回字符串s是否是当前String对象的前缀或后缀
public int compareTo(String s)
当前String对象与s按字典顺序进行比较,若小于返回负值,等于返回0,大于返回正值
public boolean contains(String s)
返回当前String对象是否包含子序列s
public int IndexOf(String s)
,public int lastIndexOf(String s)
返回首索引与尾索引,若无,返回-1
public String substring(int startpoint)
返回从starpoint下标开始的最长子串
public String substring(int start,int end)
返回索引为**[start,end)**的子串
public String trim()
返回去掉首尾空格后的字符串
四、类型转换
Integer.parseInt(String s)
返回s对应的int型数据
Byte.parseByte(String s)
返回s对应的byte型数据
Short.parseShort(String s)
返回s对应的short型数据
Long.parseLong(String s)
返回s对应的long型数据
Float.parseFloat(String s)
返回s对应的float型数据
Double.parseDouble(String s)
返回s对应的double型数据
以上方法在遇到无法解析的字符串时抛出NumberFormatException
String.valueOf(int n)
,String.valueOf(byte n)
,String.valueOf(long n)
,String.valueOf(float n)
,String.valueOf(double n)
返回n对应的字符串
public void getchars(int start.int end,char c[],int offset)
方法:将字符串的[start,end)子串从c
的offset
下标开始一一赋值
public char[] toCharArray()
返回字符串对应的字符数组
五、正则表达式在String中的用法
在Java中,正则表达式是一个String对象的字符序列
public boolean matches(String regex)
判断当前String对象是否与参数regex
指定的正则表达式匹配
public String replaceAll(String regex,String replacement)
返回当前String对象字符序列中所有与regex
匹配的子序列被replacement
替换后得到的新序列
public String[] split(String regex)
返回按regex
正则表达式匹配到的字符串序列分割后的String数组