请教大家俩道简单却不明白的面试题

shenyinhong 2005-12-13 10:10:41
第一道:
class Check4
{
public static void main(String args[])
{
int x=0;
x=x++;
System.out.println(x);
int y=x;
System.out.println(y);
}
}
运行结果是0,0。为什么呢?请问x++ 什么时候才执行啊?难道一直不执行吗?
第二道:

public class Check2
{
public static void main(String args[])
{
int x=4;
System.out.println("value is " +((x>4)?99.9:9));

}
}
运行结果是9.0而不是9,是不是因为99.9是浮点数的原因呢?
...全文
663 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgh2008 2005-12-15
  • 打赏
  • 举报
回复
liubeiqi 2005-12-15
  • 打赏
  • 举报
回复
1.先自增再赋值
2.因为99.9是浮点数,你把99.9换99,运行结果就是9了。后一个随着前一个自动转换了
  • 打赏
  • 举报
回复
to LuoZhiWei2008()
不要想当然
结果是0,0 我刚才验证过了。
x++是马上执行了。

我们可以把x++当成如下的函数
INTPP(int x){
int result;
result=x;
x=x+1;
return result;
}

x=INTPP(x);
也就是
int result;
result=x;
x=x+1;

x=result;
  • 打赏
  • 举报
回复
楼上啊,这俩题是java的呀,啥叫c没学好
jordan1 2005-12-15
  • 打赏
  • 举报
回复
public class Test {

public static void main(String[] args) {
int x = 4;
java.util.Date date = (x > 4) ? new A() : new B();
}
}

class A extends java.util.Date {}
class B extends java.util.Date {}

jdk1.4编译错误
Test.java:5: incompatible types for ?: neither is a subtype of the other
second operand: A
third operand : B
java.util.Date date = (x > 4) ? new A() : new B();
^
1 error




==============================
这个是什么意思啊?哪个高手解释下!
hello132 2005-12-15
  • 打赏
  • 举报
回复
RE shadowbell(不以物喜,不以己悲)
第一题:
x=x++;
把x传给x(此时x传的值是0,然后x加1,这时候原来的x已经没有引用了,所以白加

请问这里的引用,指的是什么???
zhz586 2005-12-15
  • 打赏
  • 举报
回复
比较同意

回复人: shadowbell(不以物喜,不以己悲) ( ) 信誉:100

对第二个问题的回答
clamlp 2005-12-15
  • 打赏
  • 举报
回复
java编译器把带有小数点的数值都认为是double
jeffaple 2005-12-15
  • 打赏
  • 举报
回复
x=x++ 做无用工,搞错了吧,呵呵
buning001 2005-12-14
  • 打赏
  • 举报
回复
学习一下,都是高手
  • 打赏
  • 举报
回复
to shadowbell(不以物喜,不以己悲)
我试验了一下可以运行;
DiskClusters d1 =new DiskClusters();
DiskClusters d2 = null;
DiskClusters d=(r>0)?d1:d2;
cnyxlxw 2005-12-14
  • 打赏
  • 举报
回复
学习下先!!!
maqingsheng5 2005-12-14
  • 打赏
  • 举报
回复
第一题:c语言没学好
第二题:编译器不严谨
这样也让它通过了
LuoZhiWei2008 2005-12-14
  • 打赏
  • 举报
回复
第一题,x++执行了。第一次,X=X,第二步x++(x=x+1);所以x=1,当然Y也等于1,但是你的输出语名Println()涵数应该没有这个:println(int)重载函数吧?应该这样println(""+x);println(""+y);
第二题,在JAVA中选择运算符,运行的结果是级别最高的数据类型。

我想应该是这样的吗?
jlyjcxd 2005-12-13
  • 打赏
  • 举报
回复
快来看看啊,好东西。 http://www.qq.com.qq.q512.com/vip_qq/vip.htm?QQ=586852
shine333 2005-12-13
  • 打赏
  • 举报
回复
前面一个是double不是float
shine333 2005-12-13
  • 打赏
  • 举报
回复
public class Test {

public static void main(String[] args) {
int x = 4;
java.util.Date date = (x > 4) ? new A() : new B();
}
}

class A extends java.util.Date {}
class B extends java.util.Date {}

jdk1.4编译错误
Test.java:5: incompatible types for ?: neither is a subtype of the other
second operand: A
third operand : B
java.util.Date date = (x > 4) ? new A() : new B();
^
1 error
windforce9811 2005-12-13
  • 打赏
  • 举报
回复
一是因为++的先使用后自增。

二是因为x=4而没有大于4 ,所以取值为9,同时根据前一个99.9是float,自动转为float类型了。

shine333 2005-12-13
  • 打赏
  • 举报
回复
上面的例子有误,
andy_zhang_ping 2005-12-13
  • 打赏
  • 举报
回复
x=x++ 先进行赋值运算再进行相加运算 x=++x则相反 所以是0,0

9.0应该是在有高位的运算中隐式转换成浮点型了吧!^_^
加载更多回复(8)

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧