黑马程序员技术交流社区

标题: 定义变量时出现了意外 [打印本页]

作者: 孙云鹏    时间: 2012-8-31 22:48
标题: 定义变量时出现了意外
class X //在这里我要写的是一个定义变量的练习,就用X用类名了

/*
运行(java)类时发现,我的X是大写的,我写了小写的x提示:找不到类
但是javac时,我写了小写的x,却没有报错找不到,这是为什么?
javac和java的某种区别吗?
*/

{
public static void main(String[] args)
{
  byte b=2;
  b=(byte)(b+3);
  System.out.println(b);
}
}

/*
一开始,我把变量定成X了,但提示错误两个,其中一个似乎说是类名为X,变量也为X,找不到符号,那
么可能在一个*.java中,一个字母,只能单独用一个特定位置。就像老师说的一个字母只能定义一个变量
,就算再用成类名,都不行,换子大小写都不行。
然后我把变量改成b,“关于这个X”的错误提示就消失了。
*/

/*
为什么要强制为byte呢?我认为,如果明知计算结果的范围,而又不想在没有必要的情况下把结果默认成
int(当然,这里有byte在前,不强制就报错了),就进行强制。【不过我这个理解好像是多余的,因为数
据类型定义的是byte,不强制就报错了】可是如果运算后,数据不在byte之内了呢?假设结果写在下面了
*/

/*
为什么这样写,没有报错,但得到的结果是“-126”???
{
  byte b=2;
  b=(byte)(b+128);
  System.out.println(b);
}
之所以这样运算,是想看看,如果float和int运算,强制Int,得到的是整数部分,如果明知得到的是
short却强制成byte,会是什么结果,可没想到是这个结果,这是为什么?
这种情况,结果不在所定义的数据类型之内,如果不强制,就报错了,可是如果强制,为什么会得出这样
的结果呢?
如果出现这种情况,难到只能改变变量的定义数据类型吗?是说明我们对变量的数据类型定义错了吗?因为强制成short会报错的。
*/





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