字符串的定义形式总结

1、使用字符串常量“imooc“创建对象,会先去常量池中查看"imooc"是否存在,如果存在就直接赋值给字符串引用s。如果不存在,就先在常量池中创建字符串"imooc",然后再赋值给字符串引用s。

String s = "imooc";

2、使用new关键字创建字符串对象,字符串的值为一个空串""

String s = new String();

3、使用new关键字创建的字符串会先去堆中创建一个对象,然后会去常量池中对比一下,如果常量池中没有,就放一份在常量池,如果有,则不会再往常量池中放了。

String s = new String("imooc");

4、可以使用字符数组创建字符串,先定义一个字符数组,创建字符串对象时使用字符数组作为参数

char[] ch = {'i','m','o','o','c'};
String s = new String(ch);

5、除了使用字符数组的所有元素创建字符串以外,还可以使用字符数组的一部分创建字符串,这里的参数1和2的含义是:1表示从数组元素的第几位开始,2表示一共几个数组元素。从第一位开始也就是从m这个字符开始,2表示从m开始的两个字符,因此字符串s的值为’mo’

char[] ch = {'i','m','o','o','c'};
String s = new String(ch,1,2);

6、可以利用字节数组生成字符串,与字符数组都在输入输出流部分应用较多,用于存储传输的二进制数据。

byte[] b = {54,69,70,71,72};
String s = new String(b);
String s1 = new String(b,1,2);

System.out.println("s="+s);
System.out.println("s1="+s1);
//输出结果为:
s=6EFGH
s1=EF

从结果可以看出,实际上这里的字节数组的元素是ASCII码值,创建字符串对象后,就将它们转换为字符了。同样,也可以使用数组元素的一部分来创建字符串。

在使用字节数组时也可以指定字符集,如下所示:

byte[] b = {54,69,70,71,72};
String s = new String(b,"utf-8");
String s1 = new String(b,1,2,"utf-8");

需要注意,此时需要抛出异常UnsupportedEncodingException,该异常可能会因为编码格式写错而发生,比如不小心将utf-8写成uft-8


版权声明:本文为BWface原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。