黑马程序员技术交流社区
标题:
一个小问题,为什么字符数组不可以这样直接转成字符串?
[打印本页]
作者:
马富林
时间:
2013-11-22 01:13
标题:
一个小问题,为什么字符数组不可以这样直接转成字符串?
一个关于字符数组转换成字符串的问题
为什么下面这段代码编译报错呢?
class Demo
{
public static void main(String[] args)
{
char[] arr={'c','d','r','g','y','h','e'};
System.out.println(arr,1,3);
}
}
复制代码
而下面的代码却是可以正常运行
class Demo
{
public static void main(String[] args)
{
char[] arr={'c','d','r','g','y','h','e'};
String ss=new String(arr,1,3);
System.out.println(arr);
}
}
复制代码
请帮我看看第一段代码那样写为什么会错
下面是第一段代码的报错情况
作者:
汪洋大海
时间:
2013-11-22 03:52
本帖最后由 汪洋大海 于 2013-11-22 03:55 编辑
System.out.println() 这句话做了什么。System这个类调用静态字段out返回一个PrintStream对象。这个对象调用方法println()。println()只能传入一个参数。这个方法不是把字符数组转成字符串,而是把数值写入到标准输出设备中。
作者:
likeermei
时间:
2013-11-22 09:17
你下面打印的话应该也是地址 不会是字符的,system类里面全是静态方法
作者:
冯国强
时间:
2013-11-22 10:05
这个问题首先是System.out.println();该句是输出语句,参数只能有一个。这是一个问题!另外,通过第一个问题应该是将字符数组转换为字符串,其中有两种方法:
第一种:字符串对象的构造函数
String(char【】,offset,count);能够正确运行的是使用了这个方法,这是将字符数组中的一部分转换成字符串。
第二种:String copyValueOf(char【】,offset,count);该方法为静态方法。
上面能够运行的方法是利用了第一种转换法,将转化后的字符串赋值给str,并封装成一个新的字符串,再赋值给ss应用变量。下面的输出语句输出的是str字符串。
作者:
smileven
时间:
2013-11-22 10:30
借1楼的话(回答好漂亮):
System这个类调用静态字段out返回一个PrintStream对象。这个对象调用方法println()。
println()只能传入一个参数。这个方法不是把字符数组转成字符串,而是把数值写入到标准输出设备中。
补充:如果你想在System.out.println()中将字符数组转成字符串,那么可以这样写。
class Demo
{
public static void main(String[] args)
{
char[] arr={'c','d','r','g','y','h','e'};
System.out.println(new String(arr,1,3));
}
}
println()不能完成转换操作的,这里的转换操作时用new String(arr , 1 , 3)完成的,然后作为一个字符串对象让println()输出。
而且这样写当System.out.println()比你的第二种方式内存使用效率更高~。
作者:
freehiker
时间:
2013-11-22 12:16
System.out.println(new String(arr,1,3)); 这样就可以了
作者:
马富林
时间:
2013-11-22 21:10
smileven 发表于 2013-11-22 10:30
借1楼的话(回答好漂亮):
System这个类调用静态字段out返回一个PrintStream对象。这个对象调用方法println( ...
明白了,System.out.println(new String(arr,1,3));这个方法就是我想要的结果。
作者:
likeermei
时间:
2013-11-23 16:06
因为创建String对象。调用了。他的构造函数。构造函数里有把char数组转换为String类型的对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2