可能是前一段时间学的不扎实,今天出了个小问题:在Java中byte、short、long、float、double这些基本类型数据无法直接转换为Boolean类型,用(Boolean)这样的强制转换也不行。但是可以使用带有逻辑运算符的表达式(合法的),或Boolean类型的变量,另外Boolean类型的数据无法像int、float等数据哪样参加加减乘除运算。希望跟我一样新学员注意了具体情况是这样的,
//求10以内的偶数的和
class ac
{
public static void main(String [] args)
{
int i,sum;
i=10;
sum=0;
while (i)
{
if(i%2)sum+=i;
i--;
}
System.out.println(i+"\t以内的偶数的和为:\t"+sum);
}
}
编译不通过,提示如下
F:\javaTest>javac test5.java
test5.java:10: 错误: 不兼容的类型: int无法转换为boolean
while (i)
^
test5.java:12: 错误: 不兼容的类型: int无法转换为boolean
if(i%2)sum+=i;
^
2 个错误
F:\javaTest>
在C中这样是可以的,在C中没有Boolean类型的数据,因此条件表达式的值是这样判断的:表达式的结果为0,就为假,否则为真。在一些脚本语言里这样也可以运行,但在Java中不行,并不是因为Java不好,而是因为Java语法规则更严谨。
之后,我还将i的类型改为byte、short、long、float、double甚至char进行测试,编译都无法通过
也就是说,在Java中byte、short、long、float、double这些基本类型数据无法直接转换为Boolean类型,用(Boolean)这样的强制转换也不行,如下:
class ac
{
public static void main(String [] args)
{
int i,sum;
i=10;
sum=0;
while ((Boolean)i)
{
if((Boolean)(i%2))sum+=i;
i--;
}
System.out.println(i+"\t以内的偶数的和为:\t"+sum);
}
}
这样改了以后就可以了
class ac
{
public static void main(String [] args)
{
int i,sum;
i=10;
sum=0;
while (i!=0)
{
if(i%2==0)sum+=i;
i--;
}
System.out.println(i+" 以内的偶数的和为:\t"+sum);
}
}
编译运行皆正常:
F:\javaTest>javac test5.java
F:\javaTest>java ac
10 以内的偶数的和为: 30
F:\javaTest>
另外Boolean类型的数据无法像int、float等数据哪样参加加减乘除运算,如这样是不行的:
Boolean b;
int c;
c=2*b+3;
新人新帖,请多指教、鼓励!谢谢!:)
|
|