所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> [求助]Java中误把==写成=的输出问题 |
以下程序时:我误将关系运算符写成赋值运算符了(最后的输出语句)
public class TestClass {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub
String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.println(cls1 = cls2); //write error
System.out.println(cls1=cls3); //write error
}
}
运行结果是下面的两行语句
class java.lang.String
class java.lang.String
我在想这个程序执行到System.out.println(cls1 = cls2);System.out.println(cls1=cls3); 时就直接忽略了这两句,应该是不输出任何东西的,它为什么还有输出上面的两行语句呢,这代表什么啊?
这个输出是正常的。还记得在学c语言的时候,应该也有类似情形吧。
看下面代码:
int i = 0;
int j = 4;
System.out.println(i=j);
首先完成 i=j 这个表达式,然后计算整个表达式的值,其实就是 i 值,当然是4。同理,你在这里cls1=cls2作为一个表达式,其值为就是cls1对cls2的引用,当进行输出,而没有明确调用某个方法的时候,会自动调用该类的toString()方法。所以就输出了上面的两行语句。
操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖 |
|