黑马程序员技术交流社区
标题:
第二句输出,没有定义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