黑马程序员技术交流社区

标题: 求解释。<已解决> [打印本页]

作者: 王德升    时间: 2012-5-15 15:33
标题: 求解释。<已解决>
本帖最后由 王德升 于 2012-6-3 23:15 编辑

public class  Demo
{
         public static void main(String[] args)
        {
                String s="abc";
                String big="";
        
                for(int x=0;x<l.length();x++)
                {
                        big+=(char)(l.charAt(x)^' ');// ⑴
                }
                System.out.println(big);
        }
}
⑴字符型char,能直接赋值给String =""吗 ?


作者: 付左军    时间: 2012-5-15 15:40
l.length??什么东西

作者: 冯心程    时间: 2012-5-15 15:46

如果你想让程序运算 “l ” 那么你应该先告诉它“l”是什么   先定义一个l的数组什么的
作者: 李哲    时间: 2012-5-15 16:16
我知道l是s。
既然你运行通过,那就是可以。
话说
l.charAt(x)^' '
进行大小写转换,巧妙!
作者: 王德升    时间: 2012-5-15 17:17
李哲 发表于 2012-5-15 16:16
我知道l是s。
既然你运行通过,那就是可以。
话说

我是看到题目看不懂,不是我写的。
作者: wangrenjie    时间: 2012-5-15 17:36
本帖最后由 wangrenjie 于 2012-5-15 17:37 编辑

字符类型不能直接给String类型赋值的。
big+=(char)(s.charAt(x)^' ');// ⑴    这句话里的(char)强制转换是把(s.charAt(x)^' ')的计算结果强转成char类型

(s.charAt(x)^' )      计算过程 :   先拿出s.charAt(x) 的值 , x=0的时候,拿到字符'a' ,字符'a'在码表中的值是97, ' ' 这个空格字符的码表值是'32' ,
它们俩个 97 ^ 32 的值是65,所以这句话的结果所对应的码表值 是:65   
接着计算 big += (char)65       把65强制转为char值,65所对应的char值是'A'
所以: big+='A'  这样是没有错的。
所以big+=(char)(s.charAt(x)^' ');不能算是直接给String类型赋值。


作者: --☆伟☆--    时间: 2012-5-15 18:09
big+=(char)(s.charAt(x)^' ');这句话包涵两次强转过程,等号右边强转为char类型,big+=包涵一次隐强转为string类型。例如:string st=" "+'g'




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