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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施天宇 中级黑马   /  2016-7-20 16:22  /  498 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        public static void main(String[] args) {
                String s = "gasiwgegndahdv";
                for(int i = 0;i < s.length(); i++)        {
                        char[] c = new char[s.length()]  ;
                        c = s.charAt(i);
                        System.out.print(c + " ");
                }
        public static void main(String[] args) {
                String s = "gasiwgegndahdv";
                for(int i = 0;i < s.length(); i++)        {
                        char[] c = new char[s.length()]  ;
                        c = s.charAt(i);
                        System.out.print(c + ' ' );
                }
这两个代码的输出结果区别????

8 个回复

倒序浏览
同问同问
回复 使用道具 举报
你的代码应该有错吧,这个变量c是数组吗还是字符?结果上第一个数输出单个的字符,并在每个字符的后面加上一个空格,第二个函数在每个字符的ascii码值上加上32(空格符的ascii值)输出
回复 使用道具 举报
估计编译时就会报错啊,c在同一个作用域内,重名了,数组和字符代表的用的一样了,有错误哦
回复 使用道具 举报
HEBEIREN 发表于 2016-7-20 18:02
你的代码应该有错吧,这个变量c是数组吗还是字符?结果上第一个数输出单个的字符,并在每个字符的后面加上 ...

c是数组,我打错了,后面输出也是数组输出,就是想问后面的为啥是打印ascii码值.
回复 使用道具 举报
没看明白,通过charAt给索引返回一个字符,你用一个变量接收,不是应该是c[i]接收吗?(又看了一遍,你是每赋值一次就打印输出,应该没问题),然后你问的问题是,第一个输出语句c后面跟的是双引号“”,这时候+起到的是拼接的作用,也就是拼接了一个字符串,字符串充血了to String f方法;第二个输出语句跟了单引号字符,这是字符没有重写,所以输出阿斯克码值,我是这么理解的
回复 使用道具 举报
施天宇 发表于 2016-7-20 20:25
c是数组,我打错了,后面输出也是数组输出,就是想问后面的为啥是打印ascii码值. ...

因为单个的字符参与运算的话,实际参与运算的是ascii码的值,单个的字符是无法象字符串那样通过简单的+号,进行连接的,这就是“ ”和‘ ’的区别。
回复 使用道具 举报
厉害厉害...
回复 使用道具 举报
觅离 中级黑马 2016-7-21 18:38:57
9#
第二个程序编译会报错你打印的是c这个引用,所以打印的是一个地址值,而且输出语句那里应该是字符串""才对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马