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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

bianbian18

中级黑马

  • 黑马币:0

  • 帖子:100

  • 精华:0

© bianbian18 中级黑马   /  2013-4-30 01:49  /  1713 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 bianbian18 于 2013-4-30 10:26 编辑

输入的密码都是abc。
第一种:
import java.io.*;
public class Demo
{
        public static void main(String args[])
        {
                Console con = System.console();
                char[] passw;
                passw = con.readPassword("输入密码:");
                System.out.println("密码是:"+passw);
        }
}
输出结果如下:
密码是:[C@131303f

第二种:
import java.io.*;
public class Demo
{
        public static void main(String args[])
        {
                Console con = System.console();
                char[] passw;
                passw = con.readPassword("输入密码:");
                System.out.print("密码是:");
                System.out.println(passw);

        }
}
输出结果如下:
密码是:abc


为什么第一种方式输出的不是密码而是数组的信息呢?:sleepy:

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 睡着了就不给技术分了哈!

查看全部评分

6 个回复

倒序浏览
唉....同样费解,待楼下高手来指点
回复 使用道具 举报
众所周知,+号除了有加法功能外,最多的就是被用来连接字符串了,毕老师说过,任何数据与字符串相“+”,都会变成字符串。
对于char字符数组而言,就会调用自己的toString方法来返回一串字符串,数组是从Object哪里继承了tostring方法而没有重载,在规范中描述道“返回一个字符串,它包含了该对象所属类的名字,”@“符号以及表示对象散列码的一个无符号十六进制整数”,所以就有了我们那个丑陋的输出了。要正确的输出字符序列,我们可以先调用String.valueOf()方法返回一个字符串对象再进行输出(把字符数组先转化为字符串)。当然我们还可以将System.out.println("密码是"+passw);;分开两次来输出以达到目的效果,即:System.out.println("密码是");System.out.println(passw);

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
楼上正解你这样写就没有问题了
System.out.println("密码是:"+String.valueOf(passw));
回复 使用道具 举报
char 是字节,String 是字符,你用string 字符串连接字节,它会自动转成string的相加的,如果不进行类型转换,就会变成你上面的结果。如 int 和double相加,会自动将结果值转成int类型。
回复 使用道具 举报
看来美女也是零基础的?
加个好友呗  一起努力
回复 使用道具 举报
貌似不是美女 但是好像武汉的呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马