class Hello {
String title;
int value;
public Hello(){ title+ = " world";}
public Hello(int value){ this.value = value; title = "Hello"; Hello();}}public class testHello
{
public static void main (String [] args)
{
Hello c = new Hello(5);
System.out.println(c.title); }
}
What is the result?
A. Hello
B. Hello World
C. Compilation fails.
D. Hello World 5
E. The code runs with no output.
F. An exception is thrown at runtime.请讲讲分析思路,以及这道题目 在考考生的哪个知识点?谢谢
1 Hello()没有这个方法
如果调用构造器,应该是this();而且必须在第一个语句,比如
public Hello(int value) {
this();
this.value = value;
title = "Hello";
}2 title+ = " world"; 字符串变量错误,不允许+号,是不是你笔误
title += " world"
这样是可以的!
并且调用只能放在方法的第一行。
class Hello
{
String title;
int value;
public Hello()
{
title += " world";
} public Hello(int value)
{
this.value = value;
title = "Hello";
Hello();
}
}
可用的调用方法class Hello
{
String title;
int value;
public Hello()
{
title += " world";
} public Hello(int value)
{
this();
this.value = value;
title = "Hello";
}
}
题目中 不是有两个 Hello();吗? 为什么第二个 不能使用 Hello(); 而要使用 this();呢?
没有的,且名字和类名相同的,就是构造器!
Hello() 明显是构造器,因为他没有返回值描述符
如果你没显式调用的话,默认也会调用super(); 并且也是在第一行。
着重考构造函数的知识点,
一个类可以有多个构造函数,
这样可以在建造的时候,不同的初始化
比如class Hello {
String title;
int value;
public Hello(){ }
public Hello(int value){ }}
构造可以new Hello();
或者 new Hello(5);
但是,构造函数是不能在调用构造函数的,
你很难想象编译器在分配内存,调用构造函数初始化后,还得再初始化,
任何类都初始化一次
public Hello(int value){ this.value = value; title = "Hello"; Hello();}
這是2個構造器
你下面還想new他?
c