分析如下代码,正确的是( )。class TempClass { int i; public void TempClass(int j) { int i = j; } } public class C { public static void main(String[] args) { TempClass temp = new TempClass(2); } } A. 程序编译错误,因为TempClass没有缺省构造函数。 B. 程序编译错误,因为TempClass没有带一个int参数的构造函数。 C. 程序编译正确,但无法运行因为类C不是公共类。 D. 程序编译和运行都正确。
时间: 2024-03-22 16:39:59 浏览: 9
正确答案是选项B,程序编译错误,因为`TempClass`没有带一个`int`参数的构造函数。
在类`TempClass`中,存在一个方法`public void TempClass(int j)`,但是这个方法的名称和类名相同,因此被认为是一个构造方法。然而,这个构造方法中定义了一个局部变量`i`,它屏蔽了类成员变量`i`。因此,当在`main`方法中创建`TempClass`对象时,类成员变量`i`没有被初始化,它的值为默认值`0`。
正确的做法应该是将构造方法修改为:
```
public TempClass(int j) {
i = j;
}
```
这样就可以正确地初始化类成员变量`i`了。因此,选项B是正确的。
相关问题
分析如下代码,正确的是( )。 class TempClass { int i; public void TempClass(int j) { int i = j; } } public class C { public static void main(String[] args) { TempClass temp = new TempClass(2); } }
这段代码存在一个错误。类`TempClass`中定义了一个方法`TempClass(int j)`,但是这个方法的名称和类名相同,因此它被认为是一个构造方法。但是,这个构造方法中定义了一个局部变量`i`,它会屏蔽类成员变量`i`。因此,当在`main`方法中创建`TempClass`对象时,类成员变量`i`没有被初始化,它的值为默认值0。
正确的做法应该是将构造方法修改为:
```
public TempClass(int j) {
i = j;
}
```
这样就可以正确地初始化类成员变量`i`了。因此,正确答案是:选项D,代码存在构造方法定义错误。
Class tempClass = obj.getClass();
这也是一个 Java 代码片段,它定义了一个名为 tempClass 的 Class 类型变量。该变量通过 obj 对象的 getClass() 方法获得,这个方法返回 obj 对象所属的类的 Class 对象。通过这个 tempClass 变量,可以获取 obj 对象的类信息,例如类名、父类信息、接口信息等。可以使用反射机制基于这个 tempClass 变量来动态地操作对象的属性和方法。