String:
String的介绍:
String在java中是比较重要的一个类,在开发过程中,经常使用;
String类代表字符串,java程序中的所有字符串字面值都作为此类的实例实现;
字符串可以看成字符数组;
字符串是常量,他们的值在创建之后不能更改;
例1:
String s = 'abc';
String s1 = 'abc';
s = 'bcd';
在内存中,常量是存储在常量池中的,如下图,String s = ‘abc’,在栈中开辟空间,abc不进堆,而是存在常量池中,假如‘abc’的地址值为‘001’,那么在栈中s的地址值为‘001’,下面String s1 = ‘abc’,在常量池中发现存在相同的值,获取相同的地址值’001’,即在栈中,s和s1的地址值相同。
s = ‘bcd’,在常量池中重新开辟空间,存放‘bcd’,获取地址值‘002’,在栈中s的地址值改为‘002’,如下图:
即例1中改变的是地址值,相同值拥有的是相同的地址值。
例2:
String s2 = new String("abc");
String s3 = new String("abc");
System.out.println(s2 == s3);
new String对象,在堆中开辟空间,赋值‘abc’,在常量池中开辟空间,所以s2的声明需要开辟两个空间,即堆中和常量池中,如下图,所以例2中,s2和s3的地址不同,最后输出结果为false
String构造方法:
public String() //无参构造
public String(byte[] bytes) //把字符数组转换成字符串
public String(byte[] bytes,int offset,int length) //从字节数组中取出一部分转换成字符串,offset是下标(从哪开始取),length(多长,到哪结束)
public String(char[] value) //把字符数组转换成字符串
public String(char[] value,int offset,int count) //从字符数组中取出一部分转换成字符串,offset是下标(从哪开始取),count(几个,到哪结束)
public String(String original) //有参构造