常用类-String类(1)
String类
概念
-
字符串是常量,创建之后不可改变
-
字符串字面值存储在字符串池中,可以共享
-
图解
-
jvm内存中堆、栈、方法区这三个储存空间,字符串字面值存储在字符串池中
![]()
-
String s1 = "a";直接创建一个值为"a"的字符串s1,s1进栈,若字符串池中有"a",则s1指向该地址,若没有,则在字符串池中新开辟一个空间存储"a",s1指向该地址![]()
-
s1 = "b";,将s1赋值为"b",这并不是将字符串池中的"a"改变为"b",而是在字符串池中新开辟一个空间,存储"b",让s1指向"b",而"a"没有其他量引用的话将被判定为垃圾,通过垃圾回收机制回从而收释放空间![]()
-
String s = "b";,因为字符串池中存在"b",不需要再开辟新空间,所以s指向的地址与s1指向的地址相同,此时s==s1返回为true,这就是字符串常量的共享![]()
-
String s2 = new String("c");,通过new String(String original)方式声明字符串可以理解为产生两个对象,堆和常量池中各开辟一个空间存储"c",s2指向堆中的对象。![]()
-
String s3 = new String("c");,此时s3==s2输出为false![]()
-
因为通过
new String(String original)创建字符串会产生两个对象,所以可能会造成空间浪费
-
常用方法(1)
-
![]()
-
源码
public char charAt(int index) { if ((index < 0) || (index >= value.length)) { throw new StringIndexOutOfBoundsException(index); } return value[index]; }
-
-
![]()
-
源码
public int length() { return value.length; }
-
-
![]()
-
源码
public boolean contains(CharSequence s) { return indexOf(s.toString()) > -1; }
-
-
例子
//String 常用方法 String content = "Java是世界上最好的编程语言"; //length()返回此字符串的长度。 System.out.println(content.length());//输出16 //charAt(int index) 返回指定索引处的 char 值。 System.out.println(content.charAt(0));//输出J //contains(CharSequence s)当且仅当此字符串包含指定的 char 值序列时,返回 true。 System.out.println(content.contains("Java"));//输出true System.out.println(content.contains("php"));//输出false
常用方法(2)
-
![]()
-
源码
public int indexOf(String str) { return indexOf(str, 0); }
-
-
![]()
-
源码
public int lastIndexOf(String str) { return lastIndexOf(str, value.length); }
-
-
![]()
-
源码
public char[] toCharArray() { // Cannot use Arrays.copyOf because of class initialization order issues char result[] = new char[value.length]; System.arraycopy(value, 0, result, 0, value.length); return result; }
-
-
例子
//String 常用方法2 String str = "Java是世界上最好的编程语言,Java真香,就好Java,别的咳嗽!"; //indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引。 System.out.println(str.indexOf("Java"));//输出0 //indexOf(String str, int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 System.out.println(str.indexOf("Java",4));//输出16 //lastIndexOf() 返回指定子字符串在此字符串中最右边出现处的索引。 System.out.println(str.lastIndexOf("Java"));//输出25 //toArrays()将此字符串转换为一个新的字符数组。用数组的toString()方法输出,否则看不到效果 System.out.println(Arrays.toString(str.toCharArray()));//输出[J, a, v, a, 是, 世, 界, 上, 最, 好, 的, 编, 程, 语, 言, ,, J, a, v, a, 真, 香, ,, 就, 好, J, a, v, a, ,, 别, 的, 咳, 嗽, !]
欲买桂花同载酒,终不似,少年游~












浙公网安备 33010602011771号