String类型
String类型在Java.lang包下,是不需要的导包的。
String字符串是常量,一旦被赋值,值不能被改变,并且职不能为空。
字符串也是由多个字符组成,有字符数组拼接而来。
char[]chs={'a','b','c'};
//计算机底层将字符数组转换为:
byte[]bytes={97,98,99};
创建字符串的构造方法
方式一:
空参构造 String( );
方式二:
传入一个字符数组创建字符串对象。
public String(char[]value){
//格式:
char[]chs={'a','b','c'}
String s = new String(chs);
System.out.println(chs);
}
方式三:
将字节转换成字符串。
public String(byte[]bytes){
byte[]bytes={97,98,99,100};
String s = new String(bytes);
System.out.println(s);
}
方式四:
将字符数组一部分构造成字符串对象。
public String(Char[]value,int begin,count){ //count多个长度。
char[]chs{'a','b','c','d','e'};
System.out.println(chs,1,3); //将索引第一个到第三个数组成字符串。
}
方式五:
将字符数组的一部分转成成字符串。
public String(byte[]bytes,int offest,int length){
byte[]bytes={97,98,99,100};
String s = new String(bytes,1,3); //将字节索引的第一个到第三个进行组合成字符串。
System.out.println(s);
}
方式六:
传入一个字符串值构造字符串对象。
String(String original){
String s = new("helloWorld");
System.out.println(s);
}
面试题:
问:s1==s2? s1和s2分别在内存中创建了几个对象?
String s1 = new String("hello");
String s2 = "hello";
解答:
s1和s2是不相等的,
s1创建了两个对象,在堆内存 new String() z,字符串还需要再常量池中开辟空间。
s2:拿"hello"常量在字符串常量寻找是否存在hello常量,如果存在,返回返回值,如果不存在,在常量池中开辟空间。
一般情况下,开发过程中创建字符串的直接方式:
String s = "字符串值";