黑马程序员技术交流社区

标题: 有个地方不理解,希望大神指教 [打印本页]

作者: shanshan33    时间: 2015-6-30 17:16
标题: 有个地方不理解,希望大神指教
看到Java基础系列笔记的一个程序:
class VarDemo
{  
        public static void main(String[] args){
                System.out.println('a'+1);
                System.out.println('你'+1);
}
为什么里面的+1不加引号??
}
作者: 路途    时间: 2015-6-30 20:27
是这样的,首先解释下,字符在计算机中存储的是编码,比如a的ascII编码是97,而'1'注意是字符'1',的ASCII编码是1,ASCII是从0~255来存放基本的字符的。不包括汉字和其他国家的字符。包含各国字符的交Unicode。扯远了。

'a'+1 这是一个表达式,这个和运算符的性质有关,如果表达式这么写那么结果完全不同,"a" + 1  那么结果就是a1了。'a'+1这个表达式做运算的时候,先把'a'强制类型转换成int然后再加1.当然在C++中完全可以重载这个+号,但是java不支持运算符重载。这个是java语言设计的时候就定义好的,就是这么个运算顺序。

就是字符相加,先转换成相应的ASCII码,然后把ASCII相加。。。
作者: 路途    时间: 2015-6-30 20:29
嗯,我知道的Java语言本身就只有一个地方对+ 进行了重载,就是String类型,的+;
其余的都是在做基本的算术运算。。。。




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