Java-API-字符串构造方法
String类构概述
字符串是由多个字符组成的一组数据(字符序列)的字符串常量,值改变后会重新创建一个新的对象。
两种创建方式
String s = “abc”;
String s = new String(“abc”);
第一种先在栈中创建一个对String类的对象引用变量s,然后去查找“abc”是否被保存在字符串常量池中,如果没有则在堆中创建一个String对象object。
第一种特点:JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。
第二种一概在堆中创建新对象,而不管其字符串是否相等,是否有必要创建新对象。
构造方法
new String()
new String(“abc”)
String(char[] value) 把char数组转为字符串
String(byte[] b,charset c) 把byte数组转为 字符串
getBytes(“utf-8”); 把字符串转为byte数组 指定字符集(编码格式)
代码演示
public static void main(String[] args) throws UnsupportedEncodingException {
//构造方法
/* String s = new String();
new String("abc");
String(char[] value); 把char数组转为字符串
String(byte[] b,charset c); 把byte数组转为 字符串
getBytes("utf-8"); 把字符串转为byte数组 指定字符集(编码格式)
*/
//字符转祖父串
char[] c = {'a','b','c','d'};
String s1 = new String(c);
System.out.println(s1);
String s2 = new String("abc");
System.out.println("s2:"+s2);
String s3 = new String(c,0,2);//count:数量的意思
System.out.println(s3);
String s4 = "abc";
byte [] b = s4.getBytes();
System.out.println(Arrays.toString(b)); //把能够看懂的字符转化为字节数组
String s5 = "中文";
byte[] b1 = s5.getBytes("utf-8");
System.out.println(Arrays.toString(b1));
System.out.println(new String());//默认为utf-8编码
System.out.println(new String(b1,"utf-8"));//把看不懂的byte数组 转换为字符串
//注意,编码和解码时两边的编码要一样,否则会乱码
}