黑马程序员技术交流社区

标题: 第二句输出,没有定义a的类型,它默认是什么类型呢? [打印本页]

作者: 我能驾驭住    时间: 2012-5-20 00:07
标题: 第二句输出,没有定义a的类型,它默认是什么类型呢?
public class text
{
public static void main(String[ ] args)
{
int a=3,b;
b=a++;
char c='黑';
char d='马';
System.out.println ("a="+a+"\n"+"b="+b+c+d);

                System.out.println('a'+1);

}

}
作者: 我能驾驭住    时间: 2012-5-20 00:08
java当中,如果不定义不能用,应该有默认的类型吧
作者: 罗文杰    时间: 2012-5-20 00:24
System.out.println('a'+1);

第二句输出语句虚拟机自动将将字符a转化为ASCII码,再同1相加,而'a'的ASCII为97,所以打印结果为98。
作者: 李斌    时间: 2012-5-20 00:31
本帖最后由 李斌 于 2012-5-20 00:35 编辑

第二句输出语中 'a'(char类型)与你定义的变量a(int类型)是不一样的哦 ,
   System.out.println('a'+1); 这句输出语会发生数据自动类型向上提升,char类型的a会自动提升为int类型的值97与1进行运算得到98的结果。
System.out.println((char)('a'+1))这样就可以强制的将98int类型的数据转换为char类型的结果b了~


作者: 彩虹    时间: 2012-5-20 00:34
        计算机中涉及到字符时,往往都是用它的ASCII码值来代替参与运算,因为字符,汉字等在内存中都是以二进制来存储的,二进制很容易转换为ASCII码        
所以System.out.println('a'+1);这句,因为后面的1为整型,系统默认也会将字符‘a’用其ASCII码表示,转换为整型在计算,输出结果为98

作者: 孙宇晨    时间: 2012-5-20 00:34
字母a 的ASCII为97   输出结果为97+1 也就是98  
你问的问题  第二句输出,没有定义a的类型,它默认是什么类型呢?
会把字母转化ASCII.  只有26个字母 单独出现时 能转化成ASCII.也就是int型的值
作者: 我能驾驭住    时间: 2012-5-20 00:56
{:soso_e189:}
作者: 李保成    时间: 2012-5-20 08:35
System.out.println ("a="+a+"\n"+"b="+b+c+d);   //将里边的数据类型自动提升为String类型
System.out.println('a'+1);                     //因为1是int类型,那么它会将char型转换为int型,接结果在自动转换为字符串输出
作者: --☆伟☆--    时间: 2012-5-20 10:39
数据类型自动提升,分为隐式转化和强制转化,但是还有一种经常犯错误的就是表达式的数据类型的自动提升。
   在java表达式的运算中,java中定义了一些规则,规则如下:
    1.所有的byte型、short型和char型自动提升为int型。
    2.如果一个操作数是float型的话,计算结果就是float型。
    3.如果一个操作数是long型的话,计算结果就是long型。
    4.如果一个操作数是double型的话,计算结果就是double型。




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