java中输出char数组转string的时候,为什么输出的是数组内容,而不是在内存...

java中输出char数组的时候,为什么输出的是数组内容,而不是在内存中的地址?
例:char[] v={'a','s','a','d'};
System.out.println(v);
//输出 是asad
按投票排序
*,全部删了重新写!!!之前还没注意过这玩意儿说好的不用手机回答此类问题呢。。。首先,肯定调用了PrintStream的println方法,这个方法有很多重载。先说输出哈希是什么情况,比如你要输出一个Object,那么会调用println(Object x)方法,方法里面是调用String s = String.valueOf(x);print(x);这个valueof方法里面会判断是不是null,不是的话再调用toString方法,toString里面就是hashCode了。所以最后输出去的是哈希现在来看你的问题,PrintStream里面有个println(char[] x),很明显会调用这个方法,方法里面是print(x);newLine();在print(char[])中又掉了write(x);=#$_=&\=##=,**手机打字,你调来调去,掉**。。在write(char[] buf)中:textOut.write(buf);textOut.flushBuffer();charOut.flushBuffer();textOut是一个BufferedWriter,charOut是一个OutputStringWriter,前者包装了后者。textOut的write(buf)会把字符数组里面的字符按顺序写入缓冲区,刷新转到底层流,然后就一层一层的往下面写出去~~~System.out.println(v.toString());System.out.println(v);前面是前面是哈希,后面是字符也就很好理解了,字符数组对象没有复写toString方法,而下面直接输出v根本就没有调用toString方法。
已有帐号?
无法登录?
社交帐号登录帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:4&分页:&发信人: NeverSay (黑色中,独自渐行渐远), 信区: JavaTutorial
标&&题: 急问大虾如何在java中判断一个字符串是否在一个字符串数组当中呢?
发信站: BBS 水木清华站 (Mon Aug 16 13:26:43 2004), 站内 && 急问大虾如何在java中判断一个字符串是否在一个字符串数组当中呢?
是否有这样的函数可用呢?
谢谢了!!!
-- && ※ 来源:·BBS 水木清华站 ·[FROM: 218.9.106.*]
&兽神官-Xelloss发信人: Torigo (兽神官-Xelloss), 信区: JavaTutorial
标&&题: Re: 急问大虾如何在java中判断一个字符串是否在一个字符串数组
发信站: BBS 水木清华站 (Mon Aug 16 20:49:54 2004), 站内 && 字符串数组?
循环一下,每个equals判断一下不就行了吗? && 【 在 NeverSay (黑色中,独自渐行渐远) 的大作中提到: 】
: 急问大虾如何在java中判断一个字符串是否在一个字符串数组当中呢?
: 是否有这样的函数可用呢?
: 谢谢了!!!
: ...................
A name of fate that has been designated since the past.
Two maidens who reign over death.
The Black hand belongs to that of the Green.
May tranquility be forever protected. &&&& ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.164.*]
卡卡★快乐如猫☆毛毛,我不知道发信人: wolfling (Kk), 信区: JavaTutorial
标&&题: Re: 急问大虾如何在java中判断一个字符串是否在一个字符串数组
发信站: BBS 水木清华站 (Wed Aug 18 15:57:59 2004), 站内 && String.indexOf(String) &&&& 【 在 NeverSay (黑色中,独自渐行渐远) 的大作中提到: 】
: 急问大虾如何在java中判断一个字符串是否在一个字符串数组当中呢?
: 是否有这样的函数可用呢?
: 谢谢了!!!
: ...................
兔子太嚣张 狐狸太狡猾
&&&&&&&&&& &&&& &&&&
我是狼 我很乖&&&&&&&& &&&& ※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.137.206.*]
&发信人: wenjianfei (可爱老人家), 信区: JavaTutorial
标&&题: Re: 急问大虾如何在java中判断一个字符串是否在一个字符串数组?
发信站: BBS 水木清华站 (Wed Aug 18 16:14:54 2004), 站内 &&&& 【 在 wolfling (Kk) 的大作中提到: 】
: String.indexOf(String
自己编一个. &&&& -- && ※ 来源:·BBS 水木清华站 ·[FROM: 211.157.101.*]
&文章数:4&分页:
抽奖到手软!将狂欢进行到底!2976人阅读
学习疑惑(6)
我的观点其实是输出函数的问题,以下是转载的两篇博文
先来看看 这个例子:
class ArrayNum{
public static void main(String[] args){
char[] num2 = {'r','w','f'};
int[] num3 = {1,3,4};
String a = &handsome girl&;
System.out.println(num2);
System.out.println(num3);
System.out.println(a);
运行后可以得到如下图结果:
结果表明我们可以直接整体输出字符型数组和字符串,而无法整体输出整形数组(只能输出其地址)
为什么会这样呢?
先从字符串讲起。String是java中的一个类,所以一定会重载toString()函数,故toString()会返回其本身。所以直接打印String类的对象会输出具体字符串(就像其他所有类一样)。而字符型数组在内存中的储存方式同String类一样,故输出数组名并不是输出数组首地址,而是直接输出数组内容直到/0;而整形数组只是整形的集合,所以其数组名仅仅是其首地址,我们必须要用for循环才能完整的输出整个整形数组
char *p;int& *p1;
int& a[10]={1,2,3,4,5,6,7,8,9,0};
char str[]=&mengfan&;
printf( &%x& , p);&& /*输出的是地址*/
printf(&%s&,p);&& /*输出的是字符串mengfan*/
printf(&%x&,p1);输出的是地址
printf(&%s&,p1);&&& /*输出的是字符串,乱码*/
p,p1中存放的应为字符串,但在输出时还要兼顾前面的输出格式符的控制,如果
是%s,则会在p的地址内的数据输出,而不再输出p本身的内容地址
printf(&%c&,p);//会输出字符串的第一个字母m
printf(&%d&,p1);//会输出数组的第一个数字
所以 p,p1离存的都是地址,在用%c,%d时都能作为首地址输出第一个字母或数组元素,
但是如果换用,%s,输出字符串,在一个地址空间内是不能存在字符串的,所以编译器
会认为是连续空间内的字符串,所以就输出了字符串。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:73794次
积分:1087
积分:1087
排名:千里之外
原创:25篇
转载:37篇
(1)(1)(1)(1)(2)(3)(1)(4)(12)(2)(4)(1)(28)(1)> 如何在java中输出一次输出所有数组内容
如何在java中输出一次输出所有数组内容
lim1234 & &
发布时间: & &
浏览:3169 & &
回复:2 & &
悬赏:0.0希赛币
怎么在java中输出一次输出所有数组内容public static void main (String args[]) {
System.out.println(&共输入了&+args.length+&个参数&);
System.out.println(args); }System.out.println(args);的输出结果为
  Java code  import java.util.A
public class PrintArgs {
public static void main(String[] args) {
System.out.println(Arrays.toString(args));
}limanzu753 & &
& & (3)(0)引用  Java code  public static void main(String[] args) {
String[] strings=new String[]{&字符1&,&字符2&,&字符3&,&字符4&,&字符5&};
for (String string : strings) {
System.out.println(string);
limanboj & &
& & (1)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 输出char数组 的文章

 

随机推荐