程序中所有的双引号字符串都是String类的对象(就算没有new,也照样是); 字符串的特点:
字符串的内容永不变;正是因为字符串不可改变,所以字符串是可以共享使用的;字符串效果上相当于char[ ]字符数组,当时底层原理是byte[ ]字节数组;创建字符串的三种构造方法:
public String();创建一颗空白字符串,不含有任何内容。public String(char [ ] array);根据字符串的内容,来创建对应的字符串;public String(byte [ ] array);根据字节数组的内容,来创建对应的字符串; public static void main(String[] args){ String str1 = new String();//小括号留空,说明字符串什么内容都没有; char[ ] charArray = {'a','b','c'}; String str2 = new String(charArray); byte[ ] byteArray = {'1','2','3'}; String str3 = new String(byteArray); String str4 = "hello world"; }字符串的常量池 常量池类似于一个Java系统级别提供的缓存。可以使类型在运行过程中速度更快,更节省内存。 只要使用方法:
直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中。字符串的比较相关方法 ==是进行对象的地址值比较,如果确定需要字符串的内容比较,可以使用两个方法; public boolean equals(Object obj),参数可以是任意对象,只有参数是一个字符串并且内容相同的才会给true,否则返回false,
任何对象都能用Object进行接受。equals方法具有对称性。如果比较常量和变量,推荐把常量字符串写在前面; public boolean equalsIgnoreCase(String str);忽略大小写,进行内容比较。字符串常用方法 public int length();获取字符串当中含有的字符个数,拿到字符串长度; public String concat(String str);将当前字符串和参数字符串拼接成为返回值新的字符串; public char charAt(int index);获取指定索引位置的单个字符; public int indexOf(String str);查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值; 字符串的截取方法: public String substring(int index);截取从参数位置一直到字符串末尾,返回新字符串; pubilc String substring(int begin,int end);截取从begin开始,一直到end结束,中间的字符串。(包括左边,不包括右边)。
字符串的转换相关方法 public char[ ] toCharArray()将当前字符串拆分为字符数组作为返回值; public byte[ ] getBytes();获取当前字符串底层的字节数组; public String replace(CharSequence oldString,CharSequence newString);将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。 字符串的分割方法 public String[ ] split(String regex) ; 按照参数的规则,将字符串切分为若干部分; 注意事项:如果按照英文句点“.”切割,regex应为“//.”;