JAVA基础(31)---API之String

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/83854708

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

     String str = "abc";
 

等效于:

     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
 

下面给出了一些如何使用字符串的更多示例:

     System.out.println("abc");
     String cde = "cde";
     System.out.println("abc" + cde);
     String c = "abc".substring(2,3);
     String d = cde.substring(1, 2);

 字符串内存结构

String str1 = " abc ",这种创建字符串,系统会在字符串常量区先查找是否有 abc 这个字符串,如果没有就分配一个空间创建出 abc 字符串,然后在栈区分配空间创建 str1 存储 abc 在字符串常量池中的地址。

String str2 = " abc",当在创建abc字符串时,同理先在字符串常量区查找,已经存在了,直接将地址存储到栈区 str2 的内存空间。

String str3 = new String("abc") ,这种方式创建字符串,首先在栈区分配给 str3 一个内存空间,在堆区分配一个空间创建abc,并将这个空间的地址存储到 str3 的内存空间。在堆区创建完字符串后,系统会检测字符串常量区是否有这个字符串,如果没有,就会将这个字符串复制到字符串常量区。

String str4 = new String("ab"),创建过程同上,因为字符串常量区没有 ab 这个字符串,所以系统就会在字符串常量区分配一个内存空间,将 ab 复制过去。

String str5 = "ab",直接将字符串常量区里 ab 的地址存储到栈区 str5 的内存空间。

String str6 = new String();

str6 = "abc";       //第一句先在栈曲创建 str6 的内存空间,然后堆区也会创建一个内存空间,将这个内存空间的地址存储到 str6 的内存空间中,第二句,赋值给 str6 一个abc字符串,然后在字符串常量区查找,将abc的地址替换掉 str6里存储的地址。

在String类中,也就是String对象中
           如果使用  ==  比较:比较的是两个字符串的地址是否一样
           如果使用  equals  方法比较,比较的是两个字符串的内容是否一样

常用方法

1、charAt

                  返回指定索引处的 char 值

public  class StringDemo{
	public static void main(String[] args){
	
		String str5 = "javase";
		char c = str5.charAt(2);
		System.out.println(c);
		int a = str5.codePointAt(2);
		System.out.println(a);
		
	}
}

2、codePointBefore

                                返回指定索引之前的字符

3、compareTo

                       按字典顺序比较两个字符串

4、compareToIgnoreCase

                      按字典顺序比较两个字符串,不考虑大小写

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/83854708