黑马程序员技术交流社区

标题: String 类与字符 [打印本页]

作者: 施天宇    时间: 2016-7-20 16:22
标题: String 类与字符
        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 + ' ' );
                }
这两个代码的输出结果区别????
作者: 664941114    时间: 2016-7-20 16:34
同问同问
作者: HEBEIREN    时间: 2016-7-20 18:02
你的代码应该有错吧,这个变量c是数组吗还是字符?结果上第一个数输出单个的字符,并在每个字符的后面加上一个空格,第二个函数在每个字符的ascii码值上加上32(空格符的ascii值)输出
作者: 不作熊孩子    时间: 2016-7-20 18:07
估计编译时就会报错啊,c在同一个作用域内,重名了,数组和字符代表的用的一样了,有错误哦
作者: 施天宇    时间: 2016-7-20 20:25
HEBEIREN 发表于 2016-7-20 18:02
你的代码应该有错吧,这个变量c是数组吗还是字符?结果上第一个数输出单个的字符,并在每个字符的后面加上 ...

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

因为单个的字符参与运算的话,实际参与运算的是ascii码的值,单个的字符是无法象字符串那样通过简单的+号,进行连接的,这就是“ ”和‘ ’的区别。
作者: 施天宇    时间: 2016-7-21 17:26
厉害厉害...
作者: 觅离    时间: 2016-7-21 18:38
第二个程序编译会报错你打印的是c这个引用,所以打印的是一个地址值,而且输出语句那里应该是字符串""才对




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2