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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);

}

}

8 个回复

倒序浏览
java当中,如果不定义不能用,应该有默认的类型吧
回复 使用道具 举报
System.out.println('a'+1);

第二句输出语句虚拟机自动将将字符a转化为ASCII码,再同1相加,而'a'的ASCII为97,所以打印结果为98。
回复 使用道具 举报
本帖最后由 李斌 于 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了~

回复 使用道具 举报
        计算机中涉及到字符时,往往都是用它的ASCII码值来代替参与运算,因为字符,汉字等在内存中都是以二进制来存储的,二进制很容易转换为ASCII码        
所以System.out.println('a'+1);这句,因为后面的1为整型,系统默认也会将字符‘a’用其ASCII码表示,转换为整型在计算,输出结果为98
回复 使用道具 举报
字母a 的ASCII为97   输出结果为97+1 也就是98  
你问的问题  第二句输出,没有定义a的类型,它默认是什么类型呢?
会把字母转化ASCII.  只有26个字母 单独出现时 能转化成ASCII.也就是int型的值
回复 使用道具 举报
{:soso_e189:}
回复 使用道具 举报
System.out.println ("a="+a+"\n"+"b="+b+c+d);   //将里边的数据类型自动提升为String类型
System.out.println('a'+1);                     //因为1是int类型,那么它会将char型转换为int型,接结果在自动转换为字符串输出
回复 使用道具 举报
数据类型自动提升,分为隐式转化和强制转化,但是还有一种经常犯错误的就是表达式的数据类型的自动提升。
   在java表达式的运算中,java中定义了一些规则,规则如下:
    1.所有的byte型、short型和char型自动提升为int型。
    2.如果一个操作数是float型的话,计算结果就是float型。
    3.如果一个操作数是long型的话,计算结果就是long型。
    4.如果一个操作数是double型的话,计算结果就是double型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马