一 基础概念
1. String是一个类,属于引用数据类型默认为null , JVM对String类做了一个特殊的处理,可以把String像基本数据类型一样使用使用
2. String 类的两种实例化方式
(1)直接赋值 String str = "hello";
(2) 通过构造方法赋值 String str = new String("hello");
区别:直接赋值 赋值内容会自动进入到字符串常量池,只开辟一块空间
通过构造方法赋值 不会进入到字符串常量池,开辟两块空间
如果想要通过构造方法实例化的String进入到字符串常量池则可以手动调用intern方法
String str2=new String("hello").intern(); |
字符串内容就是String类的匿名对象
字符串的内容是不可改变的
3. 字符串的比较
==是比较内存地址
String 中的 equals()方法是比较字符串内容(Object 类中 equals() 方法比较的还是内存地址,覆写此方法使之比较内容,String类中已覆写)
4. 字符串的内容是不能改变的,改变的是String的引用,如果在程序中大量的产生了字符串拼接操作,则就会大量的产生垃圾空间
For(int i=0;i<1000000;i++){
Str+=hello world;
}
String类不适合大量的频繁的修改字符串的内容,以后可以使用StringBuffer 或者StirngBuilder类去解决字符串频繁修改的操作
二 常用方法
构造方法
1. public String(char value[]); 要求给定一个char数组把char数组变为字符串
2.public String(char value[],int offset,int count)根据指定长度转换字符数组为字符串
3.public String(byte bytes[]) 把byte数组变为字符串
普通方法
1 获取字符串的长度
public int length();
2 判断字符串的长度是否为空
public boolean isEmpty();
3 给定指定索引反回指定索引的字符
给定一个字符串去掉字符串的左右空格
public char charAt(int index)
4 把给定的字符串转换为字节数组
public byte[] getBytes(String charsetName);
5 字符串内容比较
public boolean equals(Object anObject);
6 判断字符串是否以某个字符串开始
public boolean startsWith(String prefix)
6 判断字符串是否以某个字符串结尾
public boolean endsWith(String suffix);
7(默认从前往后找)给定指定字符串,反回该字符串的下标位置,如果找不到该字符串反回-1
public int indexOf(String ch);
8 查找指定字符串,从后往前找反回该字符的下标,找不到返回-1
public int lastIndexOf(String str);
9 截取字符串
public String substring(intbeginIndex);
10 按照范围截取字符缓
public String substring(intbeginIndex, intendIndex);
11 把字符串变为字符数组
publicchar[] toCharArray();
拓展
1 字符串连接:
字符串连接,String str+=hello 没有区别
public String concat(String str);
2 忽略大小写比较
equalsIgnoreCase(String str);
3 字符串的分割:
主要针对正则表达式的支持,表达语法
publicString[] split(String regex);