String类:
1、 构造方法
a) public String() 空构造
b) public String (byte [] bytes ) 将字节数组转换为字符串。
c) public String(byte [] bytes, int index, int length) 把字节数组的一部分转成字符串(从index开始,长度为length)
d) public String(char [] value ) 把字符数组转成字符串
e) public String(chat [] value ,int index, int count) 把字符数组的一部分转成字符串
f) public string(String original)把字符串常量转换成字符串
2、字符串方法:public int length();返回此字符串的长度

package cn.itcast_01;

public class StringDemo {
	public static void main(String[] args) {
		
		//空构造
		String s1=new String();
		System.out.println("s1:"+s1);
		System.out.println("s1.length:"+s1.length());
		
		//把字节数组转换成字符串
		byte[] bys= {97,98,99,100,101};
		String s2=new String(bys);
		System.out.println("s2:"+s2);
		System.out.println("s2.length:"+s2.length());
		
		//把字节数组的一部分转换成字符串
		String s3=new String(bys,1,2);
		System.out.println("s3:"+s3);
		System.out.println("s3.length:"+s3.length());
		
		//把字符数组转换成字符串
		char []chs= {'a','b','c','d','e','人'};
		String s4=new String(chs);
		System.out.println("s4:"+s4);
		System.out.println("s4.length:"+s4.length());
		
		//把字符数组的一部分转换为字符串
		String s5=new String(chs,1,2);
		System.out.println("s5:"+s5);
		System.out.println("s5.length:"+s5.length());
		
		//把字符串常量转换为字符串,与下面的功能一样(不常用)
		String s6=new String("abcdefg");
		System.out.println("s6:"+s6);
		System.out.println("s6.length:"+s6.length());
		
		//把字符串常量转换为字符串(常用)
		String s7="abcdefg";
		System.out.println("s7:"+s7);
		System.out.println("s7.length:"+s7.length());
	}

}

输出结果
s1:
s1.length:0
s2:abcde
s2.length:5
s3:bc
s3.length:2
s4:abcde人
s4.length:6
s5:bc
s5.length:2
s6:abcdefg
s6.length:7
s7:abcdefg
s7.length:7

字符串一旦被赋值就不能改变(指的是字符串的值hello是不会被改变,但是s的指向会变化,从而s变化)
字符串类构造方法测试
3、比较String s=new String(“hello”)和String s=”hello”的区别
字符串类构造方法测试
说明s1与s2的地址值不同,值相同

通过内存图说明原因
字符串类构造方法测试
通过图可以看出String s1=new String(“hello”)是创建两个对象,方法区一个对象是hello,堆内存通过new也创建一个对象。
String s2=“hello” 是创建一个对象,只在方法区中创建(此处的s2中由于之前s1已经创建了hello对象也就不需要在创建,只需要指向就可以了)。
4、
字符串类构造方法测试

相关文章: