我是Java和编程的新手。
我正在尝试使用已存在的对象初始化对象。
我可以这样做,还是需要使用new
?
在这里,我没有使用new
,但它有效,为什么?
我认为我需要在内存中创建之前使用new
实例化对象。
在代码中,我使用obj2
初始化了obj
,因此如果我打印它应该打印20
,但它会给出默认值30
。
我在android教程中看到了这段代码sharedpreferences obj = getsharedpreferences();
,这就是我怀疑的时候。
任何人都可以澄清这个吗?
public class Class1 {
public int b=30;
public static void main(String args[])
{
Class1 ob =new Class1();
ob.just();
}
public Class1 getobj()
{
Class1 obj =new Class1(b);
return obj;
}
public void aamethod()
{
System.out.println(b);
}
void just()
{
Class1 obj2= getobj();
System.out.println(obj2.b);
obj2.aamethod();
}
Class1()
{
a=10;
}
Class1(int b)
{
b=20;
System.out.println(b);
}
}
答案 0 :(得分:1)
关于变量如何作用的全部内容。在最后一个类定义中,您设置b = 20。您将传递给构造函数的b的值设置为20.如果将其更改为this.b = 20,则会将在类顶部声明的public int b更改为20,因此应打印出20在那种情况下,虽然没有必要将b传递给构造函数。
构造函数中的变量赋值通常类似于
public int b
public Class1 (int b) {
this.b = b;
}
其中this.b是类顶部的全局范围公共int b,b是构造函数arg本地作用于构造函数。如果您有相同名称的变量,则需要区分它们所在的范围,否则请使用其他名称。