public class Main { public static void main(String[] args) { Test test = new Test(true); } } class Test { public Test(){ System.out.println("Constructor one invoked!"); } public Test(int x){ System.out.println("Constructor two invoked!"); } public Test(boolean b){ System.out.println("Constructor three invoked!"); } } 使得程序输出结果,如下所示。 Constructor one invoked! Constructor two invoked! Constructor three invoked!
时间: 2024-01-11 15:02:17 浏览: 33
可以通过以下代码实现:
```
public class Main {
public static void main(String[] args) {
Test test1 = new Test();
Test test2 = new Test(1);
Test test3 = new Test(true);
}
}
class Test {
public Test() {
System.out.println("Constructor one invoked!");
}
public Test(int x) {
System.out.println("Constructor two invoked!");
}
public Test(boolean b) {
System.out.println("Constructor three invoked!");
}
}
```
输出结果为:
```
Constructor one invoked!
Constructor two invoked!
Constructor three invoked!
```
相关问题
下面这句代码输出结果为什么是这样import java.util.Arrays; public class Prac { private String name = "abc"; public static void main(String[] args) { Prac test = new Prac(); Prac testB = test; String result = test.equals(testB) + ","; result += test.name.equals(testB.name) + ","; result += test.name == testB.name; System.out.println(result); } }
这段代码输出的结果为:true,false,true。
首先,test.equals(testB)比较的是对象的引用,所以返回结果为true;
其次,test.name.equals(testB.name)比较的是两个字符串对象的值是否相等,所以返回结果为false;
最后,test.name == testB.name比较的是两个字符串对象的引用是否相等,由于字符串"abc"是常量池中的,所以返回结果为true。
对于下列代码: public class Test{ int x; public Test (int x){ this.x = x; } public static void main(String args[]){ Test t1, t2, t3; t1 = new Test(5); t2 = new Test(5); t3 = t2; int n = 5; } } 下列哪些表达式返回值为true?() A. t1 == t2; B. t2 == t3; C. n == t1; D. t1.equals(n)
在这段代码中,t1和t2是两个不同的对象,它们的成员变量x的值相同,t3是指向t2对象的引用。n是一个int类型的变量,所以选项C和D都是不正确的。因此,只有选项A和B需要考虑。
A. t1 == t2;:这个表达式比较的是t1和t2两个对象的引用是否相等,即它们是否是同一个对象。由于t1和t2是两个不同的对象,因此它们的引用不相等,所以这个表达式的返回值为false。
B. t2 == t3;:这个表达式比较的是t2和t3两个对象的引用是否相等。由于t3是指向t2对象的引用,所以它们的引用相等,即它们指向同一个对象,因此这个表达式的返回值为true。
因此,正确的选项是B。
阅读全文