A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忧伤 中级黑马   /  2013-9-5 21:38  /  1481 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 忧伤 于 2013-9-10 22:46 编辑

char c[]=new char[5];
c[0]='H';
c[1]='E';
c[2]='L';
c[3]='L';
c[4]='O';
char[] qq={'q','w','s'};
int[] ay={1,3,4,5};
String[] yy={"我爱","你"};
for(int j=0;j<5;j++)
{
System.out.println(c[j]);}
System.out.println(c);
String str=new String(c);
System.out.println(yy);
System.out.println(ay);
System.out.println(str);
System.out.println(qq);
为什么输出字符数组的时候可以直接写数组名而字符串和int型数组的时候却输出的是数组的地址

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 常在河边走_ 于 2013-9-5 22:06 编辑

arr数组名(引用数据类型),所以System.out.println(arr);打印的是由哈希算法得到的地址。
为什么System.out.println(ch);打印的是abc?
看例子
  • class Demo
  • {
  •         public static void main(String[] args)
  •         {
  •                 String str="abc";
  •                 System.out.println(str);
  •         }
  • }
打印结果是:abc                  这应该能想通的
重点来了::字符串和字符类型数组啥关系?字符串就是一个字符类型的数组。
String str="abc";    等效于:char[] ch ={'a','b','c'};  String str = new String(ch);
System.out.println(ch);相当于System.out.println("abc");
虽然System.out.println(ch);调用的是PrintStream类(System.out对象所属的类)的println(char[])方法,System.out.println("abc");调用的是PrintStream类的println(String)方法,但他们底层都是按照平台的默认字符编码将字符串的字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
字符数组的时候可以直接写数组名是因为:里面重写了tostring方法:而字符串和int型数组的时候却输出的是数组的地址是因为:他只是继承了objeat里面固有的tostring方法。

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
字符拼接成字符串调用的是Sting类中重写后的toString()方法,所以输出的是字符串;而字符串和int[]数组调用的则是Object类中的toString()方法,返回的是该对象的字符串表示形式:由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
  1. class ObjectTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 char[] a = new char[]{'d','s'};
  6.                 int[] b = new int[]{1,2,3};
  7.                 String[] s = new String[]{"eqw","dsad"};
  8.                 int[][] c = new int[2][3];
  9.                 Object obj = new Object();
  10.                 System.out.println(a);//这里是Println(char[])
  11.                 System.out.println(a.toString());//这里是Println(String)
  12.                 System.out.println(b);
  13.                 System.out.println(s);
  14.                 System.out.println(c);
  15.         }
  16. }
复制代码
回复 使用道具 举报
字符数组调用String类重写了toString()方法
返回值是字符串本身

String数组和int数组是调用Object类原有toString()方法
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
楼主,您好!

如果您的问题解决了,请把您问题的未解决更改为已解决

谢谢合作!


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马